摘要:實(shí)際中我們可能會用到不同的地圖,那么就對應(yīng)到不同坐標(biāo)系的轉(zhuǎn)換,比如說,你有一份的數(shù)據(jù)服務(wù),你要展現(xiàn)在百度或者高德地圖上,這時候你就需要轉(zhuǎn)換了。
地圖坐標(biāo)轉(zhuǎn)換
LBS,基于位置的服務(wù)(Location Based Service),近年來已經(jīng)無處不在,尤其是我們前端,相信或多或少都有接觸一些地圖API服務(wù),比如高德、百度啊、谷歌啊~
但是用的時候可能看到下面這些字眼:比如BD09、火星坐標(biāo)、WGS84……不由得還是蒙圈了啊?
那么接下來,我們就來了解一下,關(guān)于當(dāng)前用到的一些互聯(lián)網(wǎng)地圖的基礎(chǔ)坐標(biāo)轉(zhuǎn)換知識~
0、首先給大家出一個題地圖上的經(jīng)緯度轉(zhuǎn)換到平面坐標(biāo)時,和平面坐標(biāo)的XY的對應(yīng)關(guān)系是什么,就是經(jīng)度(longitude)和維度(latitude)分別給對應(yīng)X,Y中的誰?
這是在實(shí)際中經(jīng)常會用到的一個知識點(diǎn),我之前沒有想太多,反正就把數(shù)值往里嘗試,因?yàn)槲恢貌町惡艽螅_還是錯誤一眼就看出來了的,但是這樣其實(shí)很不好,被師兄說了,我一個GISer的連這個都弄不明白不應(yīng)該,哈哈哈。不求甚解是可以的,但是專業(yè)性還是要強(qiáng)化的。
來看看上面的圖:
經(jīng)緯度大家都知道,地球上橫線是緯度,縱線是經(jīng)度。
這也導(dǎo)致了我們下意識就會覺得,橫線是X,縱線是Y。這樣的認(rèn)知顯然是錯誤的。
但其實(shí),橫線是刻畫了Y軸上的刻度,縱線是刻畫了X軸上的刻度,這里要用到投影的角度來看問題。
所以大家要記住經(jīng)緯XY
經(jīng)度 (longitude) —— 對應(yīng) X
維度 ( latitude ) —— 對應(yīng) Y
國際標(biāo)準(zhǔn),從專業(yè)GPS 設(shè)備中取出的數(shù)據(jù)的坐標(biāo)系
國際地圖提供商使用的坐標(biāo)系
中國標(biāo)準(zhǔn),從國行移動設(shè)備中定位獲取的坐標(biāo)數(shù)據(jù)使用這個坐標(biāo)系
國家規(guī)定: 國內(nèi)出版的各種地圖系統(tǒng)(包括電子形式),必須至少采用GCJ-02對地理位置進(jìn)行首次加密。
百度標(biāo)準(zhǔn),百度 SDK,百度地圖,Geocoding 使用
(百度在火星坐標(biāo)上的二次加密)
火星坐標(biāo)系:
iOS 地圖(其實(shí)是高德) Gogole地圖 搜搜、阿里云、高德地圖
百度坐標(biāo)系:
當(dāng)然只有百度地圖
WGS84坐標(biāo)系:
國際標(biāo)準(zhǔn),谷歌國外地圖、osm地圖等國外的地圖一般都是這個三、從設(shè)備獲取經(jīng)緯度(GPS)坐標(biāo)
如果使用的是百度sdk那么可以獲得百度坐標(biāo)(bd09)或者火星坐標(biāo)(GCJ02),默認(rèn)是bd09 如果使用的是ios的原生定位庫,那么獲得的坐標(biāo)是WGS84 如果使用的是高德sdk,那么獲取的坐標(biāo)是GCJ02四、坐標(biāo)轉(zhuǎn)換方法--JS版本
我在之前的一篇文章里,基于Ionic框架的使用講到了地圖定位:ionic2入門教程(六)地圖服務(wù)(谷歌、高德、百度定位),現(xiàn)在重新寫一個小demo來實(shí)現(xiàn)我們的坐標(biāo)轉(zhuǎn)換。
關(guān)于方法,我找到了應(yīng)該是最通用的一種,源碼地址——作者wandergis,大部分的轉(zhuǎn)換方式應(yīng)該都是基于他的這個版本,相關(guān)說明也是最清楚的。
實(shí)際中我們可能會用到不同的地圖,那么就對應(yīng)到不同坐標(biāo)系的轉(zhuǎn)換,比如說,你有一份wgs84的數(shù)據(jù)服務(wù),你要展現(xiàn)在百度或者高德地圖上,這時候你就需要轉(zhuǎn)換了。
我這里的例子是,我用到百度搜索地名,得到經(jīng)緯度,但是我要將它繪制在以84為坐標(biāo)系的地圖leaflet之上,這時候我就需要將返回的經(jīng)緯度進(jìn)行轉(zhuǎn)換。
我們先用百度搜索廣州塔,定位中心
基于我們選擇的OpenStreetMap,未轉(zhuǎn)換之前,我們用百度搜索廣州塔返回的值畫點(diǎn),可以看出很明顯是偏移了的:
百度地名搜索
myGeo.getPoint(searchVal, function (point) { if (point) { console.log(point); // bd09->gcj02 var myPoint = coordtransform.bd09togcj02(point.lng, point.lat); console.log(myPoint); // gcj02->wgs84 var myPoint2 = coordtransform.gcj02towgs84(myPoint[0], myPoint[1]); console.log(myPoint2); var latlng = L.latLng([myPoint[1], myPoint[0]]); var latlng2 = L.latLng([myPoint2[1], myPoint2[0]]); // 畫點(diǎn) L.marker(point).addTo(mymap); L.marker(latlng).addTo(mymap); L.marker(latlng2).addTo(mymap); // 設(shè)置中心 mymap.setView([point.lat, point.lng], 13); } else { alert("您選擇地址沒有解析到結(jié)果!"); } }, "廣州市");源碼:https://github.com/JiaXinYi/i...
五、EPSG:3857如果你用到了leaflet/openlayers/arcgis jsAPI的話,應(yīng)該還有一個點(diǎn)需要了解
這個算是題外話,因?yàn)橐话愣际菍W(xué)gis的才會用到這些,一般情況下百度高德這些大概都能夠滿足需求了。
像用到這些地圖的情況,經(jīng)常會涉及到EPSG:3857 或者OpenLayers:900913,acrgis: 102100(3857)。EPSG:3857 其實(shí)是EPSG協(xié)會(European Petroleum Survey Group)為 Web Wercator 最終設(shè)立的WKID,也就是現(xiàn)在我們常用的Web 地圖的坐標(biāo)系,并且給定官方命名 “WGS 84 / Pseudo-Mercator“。
Web Mercator 是一個投影坐標(biāo)系統(tǒng),其基準(zhǔn)面是 WGS 1984 。
WGS 1984 是一個長半軸(a)為6378137,短半軸(b)為6356752.314245179 的橢球體,扁率(f)為298.257223563,f=(a-b)/a 。
但是,Web Mercator 坐標(biāo)系使用的投影方法不是嚴(yán)格意義的墨卡托投影而是一個被 EPSG稱為偽墨卡托的投影方法,這個偽墨卡托投影方法的大名是 Popular Visualization Pseudo Mercator,PVPM。
Google 最先發(fā)明了這套系統(tǒng),在投影過程中,將表示地球的參考橢球體近似的作為正球體處理(正球體半徑 R = 橢球體半長軸 a)。
后來,Web Mercator 在 Web 地圖領(lǐng)域被廣泛使用,這個坐標(biāo)系就名聲大噪。盡管這個坐標(biāo)系由于精度問題一度不被GIS專業(yè)人士接受,但最終 EPSG 還是給了 WKID:3857。
所以其實(shí)看到EPSG:3857,就知道,當(dāng)前的坐標(biāo)系是wgs84,而這個屬性,通常在地圖的默認(rèn)設(shè)置中。就是說,如果你不改,這些地圖就應(yīng)該是wgs84坐標(biāo)系。
六、坐標(biāo)轉(zhuǎn)換方法--TS版本(待完成)請輸入代碼如果對你有幫助的話,能否考慮打賞a cup of coffee,比心
參考:
http://wandergis.com/coordtra...
http://blog.csdn.net/kikitamo...
https://www.sogou.com/link?ur...
http://developer.baidu.com/ma...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/93201.html
摘要:不建議底圖選擇中存在兩種不同坐標(biāo)體系,如下圖坐標(biāo)存在明顯的偏差,火星坐標(biāo)在采用坐標(biāo)系的地圖上位置偏上彩色中國天地圖全球衛(wèi)星地圖例如我們使用的類進(jìn)行查找,返回的數(shù)據(jù)都是國際坐標(biāo),因此必須進(jìn)行偏差糾正。 ArcGIS for javascript開發(fā)心得 本次實(shí)例中采用ArcGIS for javascript3.24版本,由于版本3與4在API等存在較大區(qū)別,就不一一列舉,詳細(xì)區(qū)別看官方...
摘要:業(yè)內(nèi)開發(fā)框架層出不窮,,,等等,都在朝著更快,更強(qiáng)大的方向發(fā)展,有統(tǒng)一微信支付寶百度和頭條小程序的大趨勢。最近升級為版本,支持微信支付寶百度和頭條小程序。 原文鏈接 最近小程序的發(fā)展越來越火了,作為各個產(chǎn)品線的extra服務(wù)入口,以輕便、快速、強(qiáng)大的社交鏈吸引著大量的用戶和開發(fā)者。業(yè)內(nèi)開發(fā)框架層出不窮,wepy,mpvue,taro等等,都在朝著更快,更強(qiáng)大的方向發(fā)展,有統(tǒng)一 H5、微...
摘要:業(yè)內(nèi)開發(fā)框架層出不窮,,,等等,都在朝著更快,更強(qiáng)大的方向發(fā)展,有統(tǒng)一微信支付寶百度和頭條小程序的大趨勢。最近升級為版本,支持微信支付寶百度和頭條小程序。 原文鏈接 最近小程序的發(fā)展越來越火了,作為各個產(chǎn)品線的extra服務(wù)入口,以輕便、快速、強(qiáng)大的社交鏈吸引著大量的用戶和開發(fā)者。業(yè)內(nèi)開發(fā)框架層出不窮,wepy,mpvue,taro等等,都在朝著更快,更強(qiáng)大的方向發(fā)展,有統(tǒng)一 H5、微...
閱讀 3241·2021-10-13 09:39
閱讀 2007·2021-09-27 13:36
閱讀 3069·2021-09-22 16:02
閱讀 2593·2021-09-10 10:51
閱讀 1574·2019-08-29 17:15
閱讀 1529·2019-08-29 16:14
閱讀 3495·2019-08-26 11:55
閱讀 2544·2019-08-26 11:50