【測繪技術(shù)】GPS坐標偏移與轉換
開(kāi)篇的話(huà)
“相同的經(jīng)緯度坐標在地圖上顯示會(huì )有偏移”您有沒(méi)有遇到相似的情形?各種坐標體系之間如何轉換?到底有哪些坐標體系?什么是火星坐標?
GPS是怎樣定為坐標的
現在全球有四個(gè)衛星定位系統:美國的全球定位系統GPS(Global Positioning System),
俄羅斯的格洛納斯GIONASS,
歐盟的伽利略系統,
我國的北斗。
每個(gè)系統都有幾個(gè)部分:星載部分、控制部分、以及用戶(hù)部分。每個(gè)衛星在運行中,發(fā)送電磁波信息、包含時(shí)間、位置等等,用戶(hù)部分根據定位裝置接收信號,然后進(jìn)行方程解算,由于要更多的解因子,所以GPS系統下,一般三顆衛星信號鎖定后才能計算三差解,也就是粗略定位結果了。
一、坐標體系
常見(jiàn)的坐標體系有哪些:
1)GPS坐標(wgs84)
wgs84 :WorldGeodetic System 1984,(全世界最流行的基準標準系統) ,是由美國國防部制圖局建立,于1987年取代了當時(shí)GPS所采用的坐標系統(WGS-72坐標系統)。
WGS-84坐標系的坐標原點(diǎn)位于地球的質(zhì)心,Z軸指向BIHl984.0定義的協(xié)議地球極方向,X軸指向BIHl984.0的起始子午面和赤道的交點(diǎn)。
GPS系統直接通過(guò)衛星定位獲得的坐標,一般由經(jīng)度和緯度兩個(gè)參數組成,也叫經(jīng)緯度。由0°經(jīng)線(xiàn)和赤道確定,地球從格林尼治向東、西各劃分180個(gè)經(jīng)度;從赤道起,向南、北也各劃分90個(gè)緯度。單位是六十進(jìn)制(度:分:秒,字母表示方向)或十進(jìn)制(正/負十進(jìn)制度)的。
谷歌地球,googleearth上取到的,是GPS坐標,而且是度分秒形式,如圖:
2)GCJ02
GCJ-02是國內最廣泛使用的坐標體系。是由中國國家測繪局制訂的地理信息系統的坐標系統。
它是一種對經(jīng)緯度數據的加密算法,即加入隨機的偏差,就是對真實(shí)坐標系統進(jìn)行人為的加偏處理,按照特殊的算法,將真實(shí)的坐標加密成虛假的坐標,而這個(gè)加偏并不是線(xiàn)性的加偏,所以各地的偏移情況都會(huì )有所不同。而加密后的坐標也常被人稱(chēng)為火星坐標系統。
國內出版的各種地圖系統(包括電子形式),必須至少采用GCJ-02對地理位置進(jìn)行首次加密。所有的電子地圖、導航設備,都需要加入國家保密插件:第一步,地圖公司測繪地圖,測繪完成后,送到國家測繪局,將真實(shí)坐標的電子地圖,加密成“火星坐標”,這樣的地圖才是可以出版和發(fā)布的,然后才可以讓GPS公司處理。第二步,所有的GPS公司,只要需要汽車(chē)導航的,需要用到導航電子地圖的,都需要在軟件中加入國家保密算法,將COM口讀出來(lái)的真實(shí)的坐標信號,加密轉換成國家要求的保密的坐標。這樣,GPS導航儀和導航電子地圖就可以完全匹配,GPS也就可以正常工作了。
比如谷歌中國,騰訊,高德都在用這個(gè)坐標體系。
3)其他坐標體系
一般都是由GCJ-02經(jīng)過(guò)偏移算法得到的。
這種體系就根據每個(gè)公司的不同,坐標體系都不一樣了。
比如,圖吧、百度和搜狗就使用自己的坐標體系,與其他坐標體系不兼容。百度定位SDK可以返回三種坐標系,分別是bd09, bd09ll和gcj02,其中bd-09能無(wú)偏差地顯示在百度地圖上。bd09ll 百度又在gcj02的技術(shù)上將坐標加密就成了bd09ll坐標。
現在,您明白了嗎:
在各種web端平臺,或者高德、騰訊、百度上取到的坐標,都不是GPS坐標,都是GCJ-02坐標,或者自己的偏移坐標系。
比如,你在谷歌地圖API,高德地圖API,騰訊地圖API上取到的,都是GCJ-02坐標,他們三家都是通用的,也適用于大部分地圖API產(chǎn)品,以及他們的地圖產(chǎn)品。
例外,百度API上取到的,是BD-09坐標,只適用于百度地圖相關(guān)產(chǎn)品。
例外,搜狗API上取到的,是搜狗坐標,只適用于搜狗地圖相關(guān)產(chǎn)品。
例外,谷歌地球,googleearth上取到的,是GPS坐標,而且是度分秒形式的經(jīng)緯度坐標,在國內不允許使用,必須轉換為GCJ-02坐標。
二、坐標格式與轉換
1)坐標格式
A、經(jīng)緯度。這個(gè)是球面坐標,對于北京來(lái)說(shuō),就是(116.388171,39.935961)這樣的坐標。比如騰訊、高德、百度都是這樣的經(jīng)緯度坐標。谷歌是經(jīng)緯度順序寫(xiě)反的經(jīng)緯度坐標。
所有坐標體系的原點(diǎn),都是非洲,如圖:
B、墨卡托坐標。是一種投影坐標, 又稱(chēng)為高斯-克呂格投影(Gauss-KrugerProjection),它不是用經(jīng)緯度來(lái)表示的,數字一般都比較大,像這樣的:(215362.00021333335, 99526.00034912192),多用于航海圖航空圖。墨卡托坐標主要用于程序的后臺計算。直線(xiàn)距離,加加減減計算方便。比如搜狗地圖API就是直接使用的墨卡托坐標。
2)度分秒坐標與經(jīng)緯度的轉換
比如,在GPS記錄儀,或者google earth上采集到的是60進(jìn)制度分秒形式113°50'40.45,那么應該怎樣換算?
113.8445694444445=113+50/60+40.45/3600
反過(guò)來(lái),知道經(jīng)緯度113.844569444444怎樣換算成度分秒呢?
度=113
分=(113.8445694444445-度)*60,取整數
秒=(0.8445694444445-分*60)*3600
3)GPS點(diǎn)的經(jīng)緯度坐標小數點(diǎn)后哪一位是精確到米?
小數度:
經(jīng)度0.00001度(十萬(wàn)分之一度,0°0'0.036"),在赤道上對應的地球表面距離約為1米稍多,但在南北極極點(diǎn)上,則是0米.
緯度0.00001度在地球表面任意地方對應的地球表面距離都是大約1米稍多.
度分秒:
對于緯度:一秒==30.8米,一分==1.85公里.一度==110公里
對于精度,精度的差值隨著(zhù)緯度的增加而減少在赤道附近兩者是相同的,在其他地方是30.8X緯度的余弦
4)GPS 坐標與實(shí)際距離的轉換
我想知道google地圖中 GPS坐標的與實(shí)際距離的轉換
例如 點(diǎn)p1(28.18745,121.98767)到p2(28.129762,121.91891)直線(xiàn)段的距離在實(shí)際中沿球面是多少距離
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
5)坐標偏移
如果您的坐標在轉換之后,還有偏移,那么考慮以下幾個(gè)方面。
A、原始坐標系弄錯,比如以為自己是GPS坐標,但其實(shí)已經(jīng)是GCJ-02坐標。
解決方案:請確保采集到的數據是哪個(gè)坐標體系,需要轉換到哪個(gè)坐標系,再進(jìn)行坐標轉換。
B、原始坐標準確度不夠
解決方案:如果您是GPS坐標,請確保采集GPS數據時(shí),搜到至少4顆以上的衛星。并且GPS數據準不準,還取決于周?chē)ㄖ锏母叨?,越高越不準,因為有遮擋?/span>
如果本來(lái)就是GCJ-02坐標,在不同地圖放大級別的時(shí)候,看到的地方可能不一樣。比如你在地圖級別4(國家)取到的坐標,放大到地圖12級(街道)時(shí),坐標就偏了。請確保在地圖最大放大級別時(shí),拾取坐標。
C、度分秒的概念混淆
比如,在googleearth上采集到的是39°31'20.51,那么應該這樣換算,31分就是31/60度,20.51秒就是20.51/3600度,結果就是39 + 31/60 + 20.51/3600 度。
D、經(jīng)緯度順序寫(xiě)反了
有些公司(比如高德,百度,騰訊)是先經(jīng)度,再緯度,即Point(lng, lat)。但谷歌坐標的順序恰好相反,是(lat, lng)。
三、常見(jiàn)的一些問(wèn)題
1)說(shuō)“經(jīng)緯度投影”對嗎?
經(jīng)緯度表示的是地理坐標系(單位是度),不是投影坐標系(單位是米),兩者放一起明顯不妥。
2)大地坐標系與地理坐標系有何不同?
大地坐標系和地理坐標系都是經(jīng)緯度表示的坐標系,本身并不包含投影信息,很多時(shí)候,這兩種說(shuō)法都是相同的。
3)為什么有地理坐標系和投影坐標系之分?
由于經(jīng)緯度的度數不對應某一標準長(cháng)度,因此無(wú)法精確測量距離或面積,也難以在平面地圖或計算機屏幕上顯示數據。在使用許多(不是全部)GIS 分析和制圖應用程序時(shí),經(jīng)常需要由投影坐標系提供的更穩定的平面坐標框架。與地理坐標系不同,在二維空間范圍內,投影坐標系的長(cháng)度、角度和面積恒定。投影坐標系始終基于地理坐標系,而后者則是基于球體或旋轉橢球體的。在投影坐標系中,通過(guò)格網(wǎng)上的 x,y 坐標來(lái)標識位置,其原點(diǎn)位于格網(wǎng)中心。
4)通常所說(shuō)的西安80,北京54是指什么?
GIS中的坐標系統定義由基準面和地圖投影兩組參數確定,基準面對應一個(gè)參考橢球體,我們常說(shuō)的北京54、西安80、國家大地2000坐標系都是指其參考橢球體?;谶@種橢球體,我們能定義出大地坐標系和投影坐標系。只說(shuō)一個(gè)西安80是不能確定坐標系統的,因為沒(méi)有說(shuō)明有沒(méi)有投影及投影信息。如果不指明投影方式,則認為西安80、北京54的表現形式為大地坐標,而不是投影平面直角坐標。
5)什么都是高斯投影 ?
高斯-克呂格投影屬于橫軸墨卡托投影,能小范圍內保持形狀不變,因此被國內普遍采用,但在表示小比例尺數據時(shí),這種投影明顯不合適。就中國來(lái)說(shuō),一般50萬(wàn)以上比例尺采用高斯投影,50萬(wàn)以下采用蘭伯特投影。數據用途不同,具體的投影方式各有不同,有的是為了保持面積不變,有的是為了保持形狀不變。另一種世界常用的投影是UTM(通用墨卡托投影),高斯-克呂格投影是“等角橫切橢圓柱投影”,投影后**經(jīng)線(xiàn)保持長(cháng)度不變,即比例系數為1;UTM投影是“等角橫軸割圓柱投影”,圓柱割地球于南緯80度、北緯84度兩條等高圈,投影后兩條割線(xiàn)上沒(méi)有變形,**經(jīng)線(xiàn)上長(cháng)度比 0.9996。
6)北京54,西安80,WGS84,國家2000 有何不同?
54和80本質(zhì)上是參心坐標系,大地原點(diǎn)分別在蘇聯(lián)和西安,原點(diǎn)是參考橢球的幾何中心,這類(lèi)坐標難以表達高度信息,精度信息等也不夠,正被淘汰。 84和2000本質(zhì)上是地心坐標系,即以地球質(zhì)量中心作為坐標系原點(diǎn)。 54的橢球體長(cháng)半軸半徑是6378245米,80為6378140米,84和2000坐標系一樣,都是6378137米。國家最新的2000坐標系和WGS84據說(shuō)在厘米級都是一樣的,但和80坐標在高緯度地區誤差達十幾倍。
7) Google、Microsoft、ArcGIS提供的地圖服務(wù)分別采用了什么坐標系?
現在都統一為了WebMercator,即正軸墨卡托投影,和UTM(常規墨卡托)投影的主要區別是為了實(shí)現上的方便,把地球模擬為球體而非橢球體,精度理論上差別0.33%,比例尺大時(shí)基本可以忽略。同時(shí)緯度范圍變成了(-85,85),南北極顯示不了,但不影響正常使用,這樣也減少了切圖數量。
8)ArcGIS的空間參考與坐標系統?
ArcGIS的空間參考信息SpatialReference,不僅包含了坐標系統的定義,還包括容差Tolerance和分辨率Resolution等,通常由Prj文件表示。ArcGIS中的坐標系統分地理坐標系和投影坐標系,其中投影坐標系也一定包含一個(gè)地理坐標系,反之不然。
所屬類(lèi)別: 行業(yè)動(dòng)態(tài)