1、常用的坐標(biāo)系簡表如下:
坐標(biāo)系 | 說明 | 地圖使用情況 |
WGS84 | 又稱大地坐標(biāo)系/地球坐標(biāo)系/GPS坐標(biāo),坐標(biāo)系的原點(diǎn)位于地球質(zhì)心。GPS北斗芯片輸出的格式。 | Google/百度/高德地圖國外使用。國內(nèi)(含港澳臺)地圖不能使用,必須在WGS84加密的基礎(chǔ)上才能使用。 |
GCJ02 | 又稱火星坐標(biāo)系,是由中國國家測繪局制定的地理坐標(biāo)系統(tǒng),是由WGS84加密后得到的坐標(biāo)系。 | Google地圖/高德/騰訊地圖在國內(nèi)(含港澳臺)使用。 |
BD09 | 又稱百度坐標(biāo)系,在GCJ02坐標(biāo)系基礎(chǔ)上再次加密。 | 百度在國內(nèi)使用(包含港澳臺) |
2、北斗芯片輸出的坐標(biāo)是什么格式?
GPS北斗芯片(含模塊)通常輸出WGS84格式的坐標(biāo)數(shù)據(jù),不能在國內(nèi)地圖上直接使用(直接使用會有偏差,幾十米到幾百米不等),要經(jīng)過加密轉(zhuǎn)換才行,就是說,為了安全保密,GPS輸出的坐標(biāo)數(shù)據(jù)要想在中國地圖上顯示,是沒那么容易滴。
各大地圖廠商都提供了自己地圖坐標(biāo)轉(zhuǎn)換的API,可以把WGS84轉(zhuǎn)成自己的地圖坐標(biāo),然后調(diào)用位置顯示API在地圖上顯示位置。百度/高德地圖坐標(biāo)都不支持轉(zhuǎn)成WGS84格式。網(wǎng)上有破解的,這個部分不在本文的討論范圍。
下面達(dá)盟GPS小編以百度地圖為例,看看從GPS北斗芯片,模塊輸出的坐標(biāo)數(shù)據(jù),如何顯示在地圖上。
3、GPS北斗芯片(模塊)輸出經(jīng)度緯度坐標(biāo)到在百度地圖上顯示的過程
(1)GPS北斗芯片(模塊)通用輸出的數(shù)據(jù)格式
一般GPS北斗芯片(模塊)是通過UART接口發(fā)送數(shù)據(jù)給2G/4G/5G模塊,按照?NMEA0183?的協(xié)議格式輸出。舉例如下:
$GNRMC,111827.000,A,3120.488899,N,12129.856372,E,0.006,104.58,300620,,E,A*08
$GNVTG,104.58,T,,M,0.006,N,0.011,K,A*2D
$GNGGA,111827.000,3120.488899,N,12129.856372,E,1,17,0.78,77.297,M,0,M,,*6D
$GPGSA,A,3,02,05,13,15,18,29,30,,,,,,1.47,0.78,1.24*08
$BDGSA,A,3,01,02,03,04,06,08,09,11,12,13,,,1.47,0.78,1.24*1B
$GPGSV,2,1,08,02,35,141,44,05,45,056,46,13,76,035,48,15,65,254,48*76
$GPGSV,2,2,08,18,24,318,41,24,11,185,15,29,39,253,44,30,20,056,38*73
$BDGSV,3,1,10,01,45,141,41,02,37,237,35,03,52,201,41,04,34,123,38*66
$BDGSV,3,2,10,06,70,226,43,08,78,091,43,09,41,221,38,11,19,317,36*6E
$BDGSV,3,3,10,12,54,262,43,13,69,331,44*66
$GNGLL,3120.488899,N,12129.856372,E,111827.000,A,A*43
其中RMC,GGA、GLL等包都包含緯度和經(jīng)度。
格式 | 實(shí)例數(shù)據(jù) | 轉(zhuǎn)換成度 | |
緯度 | ddmm.mmmm | 3120.488899=31度20.488899分 | 31.34148165度 |
經(jīng)度 | dddmm.mmmm | 12129.85637=121度29.85637分 | 121.4976062度 |
這些經(jīng)度、緯度都是WGS84坐標(biāo)系的。
(2)2G/4G/5G模塊與服務(wù)器之間通訊
2G/4G/5G模塊把NMEA格式的數(shù)據(jù),封裝成與服務(wù)器通訊用的格式,以TCP/UDP方式傳給服務(wù)器。這里就涉及到2G、4G、5G模塊與服務(wù)器通訊的協(xié)議,由于GPS北斗終端行業(yè)發(fā)展已經(jīng)有十幾年(從中國移動在2001年7月開通GPRS服務(wù),2003年大量商用GPRS算)協(xié)議已經(jīng)有幾百種(很多GPS終端廠家都自己定制與服務(wù)器的通訊協(xié)議),導(dǎo)致GPS設(shè)備在切換平臺的時候經(jīng)常存在協(xié)議不兼容的問題。
2011年交通運(yùn)輸部統(tǒng)一規(guī)范入網(wǎng)車載GPS終端協(xié)議,簡稱JT808協(xié)議。入網(wǎng)平臺(國家或者地方強(qiáng)制某個行業(yè)使用的標(biāo)準(zhǔn)平臺)和終端必須遵循這個協(xié)議。市場上還有大量沒有入網(wǎng)的平臺和終端(用于公司或者個人位置軌跡管理、油耗載重監(jiān)控,OBD診斷,共享車控制,視頻監(jiān)控等),大部分也都支持JT808協(xié)議。
鑒于JT808協(xié)議逐漸成為主流,下面我們就用JT808協(xié)議來分析從WGS84坐標(biāo)到百度地圖顯示的過程。
(3)JT808協(xié)議中的位置數(shù)據(jù)包
下圖是JT808協(xié)議中位置信息包0x0200的定義。
下圖是我們達(dá)盟GPS超長待機(jī)設(shè)備的一次定位log。
我們把上圖位置包0x0200中的緯度(0x015976BC)和經(jīng)度(0x06CA4062)轉(zhuǎn)換成十進(jìn)制結(jié)果如下:
{經(jīng)度,緯度}={113.91805,22.640316}. —-這個就是WGS84格式的GPS北斗芯片輸出的坐標(biāo)。
(4)WGS84轉(zhuǎn)換成百度坐標(biāo)
百度坐標(biāo)轉(zhuǎn)換API官方介紹:
https://lbsyun.baidu.com/index.php?title=webapi/guide/changeposition
我們把上面的WGS84坐標(biāo)帶入百度坐標(biāo)轉(zhuǎn)換API后得到百度坐標(biāo)。
(5)在百度地圖上顯示位置
把百度坐標(biāo)帶入百度拾取坐標(biāo)系統(tǒng)。
官方鏈接是:https://api.map.baidu.com/lbsapi/getpoint/index.html
如下圖:
看到定位的結(jié)果跟我實(shí)際的GPS北斗超長待機(jī)設(shè)備放置的位置是一樣的。就是放在我們深圳市達(dá)盟科技/順盟科技公司樓下(在汽車后備箱里面放的,我的車停在7棟樓下)。
上面是達(dá)盟GPS小編從原理上梳理了一下從GPS北斗芯片輸出的坐標(biāo)到百度地圖定位的一個過程。這個可以用于測試GPS北斗設(shè)備和平臺的定位問題,好判斷是設(shè)備輸出的數(shù)據(jù)不對還是平臺定位有偏差。