javascript
【高德地图API】从零开始学高德JS API(六)坐标转换
摘要:如何從GPS轉到谷歌?如何從百度轉到高德?這些都是小case。我們還提供,如何將基站cell_id轉換為GPS坐標?
-----------------------------------------------------------------------------------------
第一部分 各種坐標系詳解
1、大地坐標系統 WGS-84
用來表述地球上點的位置的一種地區坐標系統。它采用一個十分近似于地球自然形狀的參考橢球作為描述和推算地面點位置和相互關系的基準面。一個大地坐標系統必須明確定義其三個坐標軸的方向和其中心的位置。通常人們用旋轉橢球的短軸與某一規定的起始子午面分別平行干地球某時刻的平均自轉軸和相應的真起始子午面來確定坐標軸的方向。若使參考橢球中心與地球平均質心重合,則定義和建立了地心大地坐標系。它是航天與遠程武器和空間科學中各種定位測控測軌的依據。若橢球表面與一個或幾個國家的局部大地水準面吻合最好,則建立了一個國家或區域的局部大地坐標系。大地坐標系中點的位置是以其大地坐標表示的,大地坐標均以橢球面的法線來定義。其中,過某點的橢球面法線與橢球赤道面的交角為大地緯度;包含該法線和大地子午面與起始大地子午面的二面角為該點的大地經度;沿法線至橢球面的距離為該點的大地高。大地緯度、大地經度和大地高分別用大寫英文字母B、L、H表示。
國內的互聯網公司,都不會使用GPS坐標,因為這不符合國家政策。所以大家都會使用GCJ-02坐標系。
?
2、火星坐標系統 GCJ-02
國家保密插件,也叫做加密插件或者加偏或者SM模組,其實就是對真實坐標系統進行人為的加偏處理,按照幾行代碼的算法,將真實的坐標加密成虛假的坐標,而這個加偏并不是線性的加偏,所以各地的偏移情況都會有所不同。而加密后的坐標也常被人稱為火星坐標系統。
目前使用火星坐標系的地圖商:
騰訊搜搜地圖
搜狐搜狗地圖
阿里云地圖
高德MapABC地圖
靈圖51ditu地圖
所有的電子地圖所有的導航設備,都需要加入國家保密插件。第一步,地圖公司測繪地圖,測繪完成后,送 到×××,將真實坐標的電子地圖,加密成“火星坐標”,這樣的地圖才是可以出版和發布的,然后才可以讓GPS公司處理。第二步,所有的GPS公司,只要需要汽車導航的,需要用到導航電子地圖的,統統需要在軟件中加入國家保密算法,將COM口讀出來的真實的坐標信號,加密轉換成國家要求的保密的坐標,這樣,GPS導航儀和導航電子地圖就可以完全匹配,GPS也就可以正常工作。
國內互聯網公司,都必須使用GCJ-02坐標系。
?
?
3、百度坐標系統 BD-09
百度坐標對火星坐標系進行了一次加密,形成了百度坐標系.
目前使用百度坐標系的地圖商:
百度Baidu地圖
少部分公司會在GCJ-02的基礎上再進行一次加密,但這樣的坐標不通用,只適于特定公司的地圖。
?
4、圖吧
圖吧是百度坐標乘以10000的結果。
目前使用圖吧坐標系的地圖商:
圖吧MapBar地圖
少部分公司會在GCJ-02的基礎上再進行一次加密,但這樣的坐標不通用,只適于特定公司的地圖。
?
5、移動聯通基站
移動基站采用小區制,覆蓋范圍幾KM;而聯通基站采用大區制,可以覆蓋幾十KM;輻射的頻率大小和能量決定覆蓋范圍。從另一角度來看,從能量守恒的角度來分析:手機輻射大的其基站輻射小(GSM),反之手機輻射小的其基站輻射大(CDMA) 。
聯通聯通基站格式 MNC MCC LAC CELLID
MNC(Mobile Network Code,移動網絡號碼),用于識別移動客戶所屬的移動網絡。
MCC(Mobile Country Code,移動國家號碼),用于唯一地標識移動客戶屬于的國家。它由三位十進制數組成(000-999),例如我國的MCC為460。
LAC(Location Area Code, 移動位置區碼),是為尋呼而設置的一個區域,覆蓋一片地理區域,初期一般按行政區域劃分(一個縣或一個區),現在很靈活了,按尋呼量劃分。當一個LAC下的尋呼量達到一個預警門限,就必須拆分。 為了確定移動臺的位置,每個GSMPLMN的覆蓋區都被劃分成許多位置區,位置區碼(LAC)則用于標識不同的位置區。 位置區碼(LAC)包含于LAI中,由兩個字節組成,采用16進制編碼??捎梅秶鸀?x0000-0xFFFF,碼組0x0000和0xFFFE不可以使用(參見GSM規范03.03、04.08和11.11)。一個位置區可以包含一個或多個小區。
CELLID(Cell Tower ID,移動基站號),單元是指一個DVB-T信號覆蓋的地理區域,這個信號是由一個或者多個發射機使用單一頻率傳輸的,每個發射機可以發射特定的傳輸流。單元也可以包括中繼器所覆蓋的區域。兩個相鄰的單元之間可以有重疊的區域。在一個用原始網絡標識符(original_network_id)標識的網絡里面,標識一個單元的單元標識符(cell_id)是唯一的。
?
6、電信基站格式
SID NID BID
SID和NID確定你現在使用的那里的網絡,看你是否漫游,BID主要是確定你是用的哪個基站。
?
二、坐標如何轉換
GPS轉谷歌地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&?功能手機
??type=wgs2gcj&lng=116.420817&lat=39.906987GPS轉到高德地圖:同上
GPS轉百度地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=wgs2bd&lng=116.420817&lat=39.906987
GPS轉圖吧地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=wgs2mb&lng=116.420817&lat=39.906987
谷歌地圖轉GPS?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=gcj2wgs&lng=116.420817&lat=39.906987
谷歌地圖轉百度地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=gcj2bd&lng=116.420817&lat=39.906987
百度地圖轉GPS?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=bd2wgs&lng=116.420817&lat=39.906987
百度地圖轉谷歌地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=bd2gcj&lng=116.420817&lat=39.906987
百度地圖轉高德地圖:同上
圖吧地圖轉GPS?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=mb2wgs&lng=116.420817&lat=39.906987
基站轉GPS?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=cellid2wgs&lac=4340&cellid=13178
基站轉谷歌地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=cellid2gcj&lac=4340&cellid=13178
基站轉到高德地圖:同上
基站轉百度地圖?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=cellid2bd&lac=4340&cellid=13178
經緯度轉地址(大地:lnglat2address-wgs,火星:lnglat2address-gcj,百度:lnglat2address-bd)?http://ditujiupian.com/service/api.ashx?key=您的KEY&type=lnglat2address-wgs&lng=116.420817&lat=39.906987
以上服務由坐標糾偏網站提供,更多細節可以訪問網站,申請key。http://ditujiupian.com/
我申請了一個試用key:08145a5c5d2b487db7adeeac4a90f12a
?
三、百度坐標轉到高德坐標的算法
1、線性轉換
var?TO_GLNG?=?function(lng){return?lng-0.0065;};var?TO_GLAT?=?function(lat){return?lat-0.0060;};?
2、球面坐標轉換
#include?<math.h>??????x_pi?=?3.14159265358979324?*?3000.0?/?180.0?bd_decrypt(?bd_lat,??bd_lon,??&gg_lat,??&?x?=?bd_lon?-?0.0065,?y?=?bd_lat?-?0.006?z?=?sqrt(x?*?x?+?y?*?y)?-?0.00002?*?sin(y?*?theta?=?atan2(y,?x)?-?0.000003?*?cos(x?*=?z?*=?z?*
?
3、網絡接口
http://ditujiupian.com/service/api.ashx?key=您的KEY&type=bd2gcj&lng=116.420817&lat=39.906987
?
----------------------------------------------------------
另外一篇關于坐標轉換的文章,《為何您的坐標不準?》
http://www.cnblogs.com/milkmap/p/3627940.html
轉載于:https://blog.51cto.com/8920932/1427745
總結
以上是生活随笔為你收集整理的【高德地图API】从零开始学高德JS API(六)坐标转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flume-NG + HDFS + HI
- 下一篇: 7、JS面向对象编程之继承