今天世超逛知乎的時候,刷到一個很有趣的問題。
把百度地圖上搜的經緯度導入高德地圖上,陸地變海洋了?
無獨有偶,有人在百度地圖上獲取了坐標,往騰訊地圖裡一放,也產生了約一公裡的誤差。
呃,這是咋回事?
平時瞅著自己用的地圖也沒這麼大的問題啊。
咱們今天就來說說坐標偏移這小破事~
這個事情呢,還要從GPS ( 全球定位系統)開始說起。
早在20 世紀70 年代,美國為了情報搜集、應急通訊等目的,搞出了一套能在全球範圍內實時進行定位、導航的系統—— GPS 。
現在,從行車記錄儀到智能穿戴,大家的生活已經離不開GPS 。
扯回來,有了全球性的定位導航系統,你也要配套一個全球性的坐標系統才能用不是?
於是, WGS84 坐標體系誕生了,它隨GPS 通用,能正確套到現在大部分基於這套坐標建立的衛星地圖上。
它今天戲份不太重要,大家只需知道有這麼個東西就好。
如果,大家都老老實實用這一個坐標系的話,就不會有今天這篇文章了。。。
有一些國家會使用各自的坐標系,不過跟WGS-84 都還挺接近的。
基於各種各樣的原因,我國也採用了自己的坐標系,還跟WGS-84 差別還挺大。。。
咱們自家的坐標系是國測局坐標系( GCJ-02 )。又稱「 火星坐標系」 。
並且我國要求,任何一個地圖產品至少要使用「 GCJ-02 」 進行首次加密,不允許直接使用原始坐標體系。高德、騰訊等都是用的這個坐標系。
這個「 GCJ-02 」 又是什麼呢?
簡單來說,它是一個算法,通過一定的公式,對真實坐標系統進行人為加偏處理,將真實的坐標加密成虛假的坐標,將一張地圖「 換」 成了另一張地圖。
轉換完成後,地圖上的點會發生幾十到幾百米的偏移。
也就是說,你在手機地圖上的GPS ,可能跟你真實的GPS 坐標有好幾百米的誤差。。。
別以為這事這樣就完了。。。
本來大家都加上這個「 GCJ-02 」 就都能用了。
嗯,本來。。。
事實上,到了不同的地圖公司,這事又發生了變化。
部分公司會在GCJ-02 的基礎上再次加密。而且自己加密出來的坐標並不通用,只適用於特定公司的地圖。
像百度,就偏要再騷一下,在GCJ-02 要求加密的基礎上,又通過自己的加密算法BD-09 又對坐標加密了一次。
說到這裡,大家都知道開頭烏龍的原因了吧?
同一個坐標,在百度地圖是陸地,到了高德地圖可能就跑到了海裡,再往谷歌地圖裡一放,跟前兩個點都有好幾百米誤差。
同一坐標在不同地圖上產生了偏移,並非是地圖出了問題,而是不同的地圖採用了不同的坐標系。
到這裡,可能還有些差友還沒反應過來。。。
地圖是偏移的,但是為毛用手機地圖的時候根本沒感覺到呢?!
因為除了對手機地圖加偏外,用戶的定位也被加偏處理後再顯示在地圖上。相關坐標都被同一算法給加偏後,兩者完全匹配, GPS 也就可以正常工作。
好了,以後大家身邊的人遇到這樣的事情。
可以小小的裝一波X 給他們解釋一下了。。。
參考資料https://blog.csdn.net/jiang117/article/details/48031927圖片來源谷歌知乎
「 今天一天盡研究這玩意了。。 」
感謝閱讀~
歡迎點讚、評論,分享你的觀點~