日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

地理坐标转换 - 地理信息系统(3)

發布時間:2023/12/20 windows 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 地理坐标转换 - 地理信息系统(3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(2017-07-06 銀河統計)

在百度地圖中,地址“哈爾濱市道里區通達街138號”的經緯度解析為(126.616759, 45.74989),而在高德地圖中,相同地址的經緯度則解析為(126.609207, 45.740142)。原因是百度和高德采用的地理坐標系統不同。

本文介紹國內常用網絡地圖API坐標系統特點,并提供不同坐標間的批量轉換解決方案。

一、常用地理坐標體系及分類

地理數據的坐標系一般有兩大類,一是地理坐標系(GCS)、是經緯度單位的橢球坐標系;二是投影坐標系(PCS)、是平面直角坐標系。

投影坐標系(PCS)的定義一般會包含兩方面的定義信息:

基準面/Datum — 與GCS相應 投影方法/Projection Method

1、WGS-84原始坐標體系

WGS-84坐標體系又稱世界大地坐標系或地球坐標。

國際通用標準,規定GPS 設備中取出的原始數據應該是地球坐標。

“ 世界大地坐標系是美國國防部制圖局(Defence Mapping Agency, DMA)為統一世界大地坐標系統,實現全球測量標準的一致性,定義用于制圖、大地、導航的坐標基準。它包括標準地球坐標框架、用于處理原始觀測數據的標準橢球參考面(即基準和參考橢球)和定義標準海平面的重力等勢面(大地水準面)。

定義一個坐標系絕對是一個復雜浩大的數學工程。 我們經常聽說的 WGS 1984 (或 WGS 84)就是其中一個世界大地坐標系統。我們經常使用的 GPS 的坐標參考系統也是它。一般用國際標準的GPS記錄儀記錄下來的坐標,都是GPS的坐標。很可惜,在中國,任何一個地圖產品都不允許使用GPS坐標,據說是為了保密。

WGS 1984 是一個長半軸(a)為6378137,短半軸(b)為6356752.314245179 的橢球體,扁率(f)為298.257223563,\(f=\frac{a-b}{a}\)

2、GCJ-02坐標體系

GCJ-02國測局2002年發布的坐標體系,又稱“火星坐標”。適用于國內,國內地圖供應商基本使用該坐標系對位置進行加密。在中國,很多時候必須使用GCJ-02的坐標體系。比如谷歌,騰訊,高德都在用這個坐標體系。GCJ-02也是國內最廣泛使用的坐標體系。

火星坐標系統的原理是這樣的:國測局開發了一個系統,能將實際的坐標轉換成虛擬的坐標。所有在中國銷售的數字地圖必須使用這個系統進行坐標轉換之后方可上市。這是生產環節,這種電子地圖被稱為火星地圖。在使用環節,GPS終端設備必須集成國測局提供的加密算法,把從GPS衛星那里得到的坐標轉換成虛擬坐標,然后再去火星地圖上查找,這樣就在火星坐標系上完成了地圖的匹配。推出這個系統的名義是為了國家安全。然后呢,可以收取一定的費用。

3、其它坐標體系

一般都是由GCJ-02進過偏移算法得到的。這種體系就根據每個公司的不同,坐標體系都不一樣了。比如,百度和搜狗就使用自己的坐標體系,與其他坐標體系不兼容。

互聯網在線地圖使用的坐標系

火星坐標系:

iOS 地圖(其實是高德) Gogole地圖 騰訊搜搜地圖 阿里云地圖 高德地圖 搜狐搜狗地圖

百度坐標系:

當然只有百度地圖

WGS84坐標系(GPS原始坐標系):

國際標準,谷歌國外地圖、osm地圖等國外的地圖

二、地理坐標系與投影原理

地理坐標系(Geographic Coordinate System),是使用三維球面來定義地球表面位置,以實現通過經緯度對地球表面點位引用的坐標系。一個地理坐標系包括角度測量單位、本初子午線和參考橢球體三部分。

地理坐標系為球面坐標。 參考平面地是橢球面,坐標單位為經緯度;投影坐標系為平面坐標。參考平面地是水平面,坐標單位為米、千米等;地理坐標轉換到投影坐標的過程可理解為投影。(投影:將不規則的地球曲面轉換為平面)。

1、地理坐標

地理坐標系可以確定地球上任何一點的位置。首先將地球抽象成一個規則的逼近原始自然地球表面的橢球體,稱為參考橢球體,然后在參考橢球體上定義一系列的經線和緯線構成經緯網,從而達到通過經緯度來描述地表點位的目的。需要說明的是經緯地理坐標系不是平面坐標系,因為度不是標準的長度單位,不可用其直接量測面積長度。

經緯度通常分為天文經緯度、大地經緯度和地心經緯度。常用的經度和緯度是從地心到地球表面上某點的測量角。通常以度或百分度為單位來測量該角度。

在球面系統中,位于兩極點中間的緯線稱為赤道。它定義的是零緯度線。零經度線稱為本初子午線。對于絕大多數地理坐標系,本初子午線是指通過英國格林尼治的經線。其他國家/地區使用通過伯爾尼、波哥大和巴黎的經線作為本初子午線。經緯網的原點 (0,0) 定義在赤道和本初子午線的交點處。這樣,地球就被分為了四個地理象限,它們均基于與原點所成的羅盤方位角。南和北分別位于赤道的下方和上方,而西和東分別位于本初子午線的左側和右側。

通常,經度和緯度值以十進制度為單位或以度、分和秒 (DMS) 為單位進行測量。緯度值相對于赤道進行測量,其范圍是 -90°(南極點)到 +90°(北極點)。經度值相對于本初子午線進行測量。其范圍是 -180°(向西行進時)到 180°(向東行進時)。如果本初子午線是格林尼治子午線,則對于位于赤道南部和格林尼治東部的澳大利亞,其經度為正值,緯度為負值。

2、投影坐標

將球面坐標轉化為平面坐標的過程便稱為投影。

投影坐標系在二維平面中進行定義。與地理坐標系不同,在二維空間范圍內,投影坐標系的長度、角度和面積恒定。投影坐標系始終基于地理坐標系,而后者則是基于球體或旋轉橢球體的。在投影坐標系中,通過格網上的 x,y 坐標來標識位置,其原點位于格網中心。每個位置均具有兩個值,這兩個值是相對于該中心位置的坐標。一個指定其水平位置,另一個指定其垂直位置。這兩個值稱為 x 坐標和 y 坐標。采用此標記法,原點坐標是 x = 0 和 y = 0。

在等間隔水平線和垂直線的格網化網絡中,中央水平線稱為 x 軸,而中央垂直線稱為 y 軸。在 x 和 y 的整個范圍內,單位保持不變且間隔相等。原點上方的水平線和原點右側的垂直線具有正值;下方或左側的線具有負值。四個象限分別表示正負 X 坐標和 Y 坐標的四種可能組合。在地理坐標系中處理數據時,有時用 X 軸表示經度值并用 Y 軸表示緯度值很有用。

3、墨卡托投影坐標

墨卡托投影,是正軸等角圓柱投影。由荷蘭地圖學家墨卡托(G.Mercator)于1569年創立。假想一個與地軸方向一致的圓柱切或割于地球,按等角條件,將經緯網投影到圓柱面上,將圓柱面展為平面后,即得本投影。墨卡托投影在切圓柱投影與割圓柱投影中,最早也是最常用的是切圓柱投影。

假設地球被圍在一中空的圓柱里,其基準緯線與圓柱相切(赤道)接觸,然后再假想地球中心有一盞燈,把球面上的圖形投影到圓柱體上,再把圓柱體展開,這就是一幅選定基準緯線上的“墨卡托投影”繪制出的地圖。 墨卡托投影沒有角度變形,由每一點向各方向的長度比相等,它的經緯線都是平行直線,且相交成直角,經線間隔相等,緯線間隔從基準緯線處向兩極逐漸增大。墨卡托投影的地圖上長度和面積變形明顯,但基準緯線處無變形,從基準緯線處向兩極變形逐漸增大,但因為它具有各個方向均等擴大的特性,保持了方向和相互位置關系的正確。在地圖上保持方向和角度的正確是墨卡托投影的優點,墨卡托投影地圖常用作航海圖和航空圖,如果循著墨卡托投影圖上兩點間的直線航行,方向不變可以一直到達目的地,因此它對船艦在航行中定位、確定航向都具有有利條件,給航海者帶來很大方便。

墨卡托投影坐標系取零子午線或自定義原點經線(L0)與赤道交點的投影為原點,零子午線或自定義原點經線的投影為縱坐標X軸,赤道的投影為橫坐標Y軸,構成墨卡托平面直角坐標系。

三、地理坐標轉換

當您獲得的經緯度坐標和使用的地理信息系統不一致時,如使用的是百度地圖,但經緯度數據卻不是百度經緯度,這時必須首先將其它經緯度坐標系轉換為百度坐標系,反之亦然。

1、火星坐標轉百度坐標

屬于火星坐標的地理信息系統主要有高德、Gogole地圖、搜搜地圖等。

火星坐標:?經度??緯度??坐標轉換 百度坐標:?經度??緯度?

注:輸入火星坐標經緯度,點擊“坐標轉換”按鈕,可獲得百度經緯度。火星坐標經緯度(126.609207, 45.740142)樣例

代碼樣例

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script> <title>google轉百度</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript"> // 百度地圖API功能 //谷歌坐標 var x = 116.32715863448607; var y = 39.990912172420714; var ggPoint = new BMap.Point(x,y);//地圖初始化 var bm = new BMap.Map("allmap"); bm.centerAndZoom(ggPoint, 15); bm.addControl(new BMap.NavigationControl());//添加谷歌marker和label var markergg = new BMap.Marker(ggPoint); bm.addOverlay(markergg); //添加谷歌marker var labelgg = new BMap.Label("未轉換的谷歌標注(錯誤)",{offset:new BMap.Size(20,-10)}); markergg.setLabel(labelgg); //添加谷歌label//坐標轉換完之后的回調函數 translateCallback = function (data){if(data.status === 0) {var marker = new BMap.Marker(data.points[0]);bm.addOverlay(marker);var label = new BMap.Label("轉換后的百度標注(正確)",{offset:new BMap.Size(20,-10)});marker.setLabel(label); //添加百度labelbm.setCenter(data.points[0]);} }setTimeout(function(){var convertor = new BMap.Convertor();var pointArr = [];pointArr.push(ggPoint);convertor.translate(pointArr, 3, 5, translateCallback) }, 1000); </script>

注:代碼樣例代碼摘自百度地圖API示例文檔

2、GPS原始坐標轉百度坐標

原始坐標:?經度??緯度??坐標轉換 百度坐標:?經度??緯度?

注:代碼樣例和火星坐標轉百度坐標代碼相同,最后一行代碼修改為:
“convertor.translate(pointArr, 1, 5, translateCallback)”

3、火星坐標轉和GPS原始坐標批量轉百度坐標

[[116.307852,40.057031],[116.313082,40.047674],[116.328749,40.026922],[116.347571,39.988698],[116.316163,39.997753],[116.345867,39.998333],[116.403472,39.999411],[116.307901,40.05901]]

火星坐標??原始坐標 ????

注:按數組格式批量添加經緯度,然后運行“批量坐標轉換”按鈕。每次最多轉換10組經緯度

代碼樣例

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css">body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微軟雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=您的密鑰"></script> <title>批量轉換</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript">var points = [new BMap.Point(116.3786889372559,39.90762965106183),new BMap.Point(116.38632786853032,39.90795884517671),new BMap.Point(116.39534009082035,39.907432133833574),new BMap.Point(116.40624058825688,39.90789300648029),new BMap.Point(116.41413701159672,39.90795884517671) ]; //地圖初始化 var bm = new BMap.Map("allmap"); bm.centerAndZoom(new BMap.Point(116.378688937,39.9076296510), 15); //坐標轉換完之后的回調函數 translateCallback = function (data){if(data.status === 0) {for (var i = 0; i < data.points.length; i++) {bm.addOverlay(new BMap.Marker(data.points[i]));bm.setCenter(data.points[i]);}} } setTimeout(function(){var convertor = new BMap.Convertor();convertor.translate(points, 1, 5, translateCallback) }, 1000); </script>

注:代碼樣例代碼摘自百度地圖API示例文檔

4、百度經緯度批量轉換為墨卡托坐標

[[116.307852,40.057031],[116.313082,40.047674],[116.328749,40.026922],[116.347571,39.988698],[116.316163,39.997753],[116.345867,39.998333],[116.403472,39.999411],[116.307901,40.05901]]

?

在百度地圖API中,墨卡托坐標(平面坐標)是以最大級別18級為基準的。在18級條件下,平 面坐標的一個單位就代表了屏幕上的1個像素。平面坐標與地圖所展示的級別沒有關系,也就是說在1級和18級下,天安門位置的平面坐標都是一致的。

分級地圖展示示例如下:

初始化展示中心點經度??緯度? ?級別?123456789101112131415161718

注:在級別下拉框中選擇1-18級觀察地圖變化效果

5、墨卡托坐標批量轉換為百度經緯度

[[12947471.74,4846477.11],[12948053.94,4845121.73],[12949798.01,4842116.43],[12951893.28,4836583.24],[12948396.92,4837893.73],[12951703.59,4837977.68],[12958116.22,4838133.71],[12947477.19,4846763.79]]

?

百度經緯度轉換為摩卡托

var pt = new BMap.Point(116.316163,39.997753); var projection = map.getMapType().getProjection(); var worldCoordinate = projection.lngLatToPoint(pt);

worldCoordinate.x和worldCoordinate.y就是平面(墨卡托)坐標的x和y。

摩卡托轉換為百度經緯度

var xy = new BMap.Pixel(12948396.92,4837893.73); var projection = map.getMapType().getProjection(); var LngLat = projection.pointToLngLat(xy);

LngLat.lng和LngLat.lat就是經緯度。

6、百度地圖API的像素坐標

平面坐標系的原點與經緯度的原點一致,即赤道與0度經線相交的位置。對于地球上某一個固定的點(如天安門:經度116.403875、緯度39.915168),在不同級別地圖圖片上該點到平面坐標原點的像素坐標是不同的。在第18級下,直接將平面坐標向下取整就得到了像素坐標,而在其他級別下可以通過如下公式進行換算(這里取整為向下取整):

\[像素坐標 = |平面坐標\times 2^{zoom - 18}|\]

例如,經過計算,在第4級天安門位置的像素坐標是:790, 294。

天安門的經度為116.403875、緯度為39.915168,轉換為墨卡托坐標為X=12958161.09、Y=4825948.05。

在第18級地圖中,直接將平面坐標向下取整就得到了像素坐標,即(12958161,4825948)。

在第4級地圖中,

\[像素坐標X = |12958161.09\times 2^{4 - 18}| = |790.9034|=790\]
\[像素坐標Y = |4825948.05\times 2^{4 - 18}| = |295.5525|=294\]

注:計算結果向下取整

7、百度地圖API的圖塊坐標

百度地圖API在展示地圖時是將整個地圖圖片切割成若干圖塊來顯示的,當地圖初始化或是地圖級別、中心點位置發生變化時,地圖API會根據當前像素坐標計算出視野內需要的圖塊坐標(也叫圖塊編號),從而加載對應的圖塊用以顯示地圖。通常,百度地圖分辨率越高、顯示級別越大,需要的地圖圖片就越多。

百度地圖的圖塊坐標原點與平面坐標一致,從原點向右上方開始編號為0, 0:

如何知道某個位置的圖塊坐標呢?通過如下公式計算即可(這里為向下取整):

圖塊坐標 = |像素坐標 ÷ 256|

256實際上是每個圖塊的像素寬度和高度,我們用像素坐標除以這個數就知道圖塊坐標了。

還以天安門為例,在第4級下天安門所在的圖塊編號為(3,1):

\[圖塊坐標X = |790 ÷ 256| = |3.086| = 3 (px)\]
\[圖塊坐標Y = |294 ÷ 256| = |1.1484| = 1 (px)\]

而在第18級下,圖塊編號為(50617, 18851)

\[圖塊坐標X = |12958161 ÷ 256| = |50617.82| = 50617 (px)\]
\[圖塊坐標Y = |4825948 ÷ 256| = |18851.36| = 18851 (px)\]

8、運用Javascript函數進行坐標批量轉換

前面給出的國測局坐標(火星坐標,GCJ02)、和GPS坐標(原始坐標,WGS84)轉換為百度坐標(BD09)的方法由百度地圖API提供。下面的Javascript代碼可以更方便地進行不同坐標系的轉換。項目細節參考GitHub地址:https://github.com/wandergis/coordtransform。

[[116.307852,40.057031],[116.313082,40.047674],[116.328749,40.026922],[116.347571,39.988698],[116.316163,39.997753],[116.345867,39.998333],[116.403472,39.999411],[116.307901,40.05901]]
由?火星坐標(GCJ02)原始坐標(WGS84)百度坐標(BD09)?轉換為??

注:按數組格式批量添加經緯度,選擇相互轉換的坐標,然后運行“批量坐標轉換”按鈕。每次轉換數量不受限制,可進行大批量地址轉換。

本文提供的各種坐標轉換工具僅用于個人學習或教學研究用途,不支持大批量商業用途坐標轉換(由于百度地圖key的限制)。

轉載于:https://www.cnblogs.com/cloudtj/p/7128537.html

總結

以上是生活随笔為你收集整理的地理坐标转换 - 地理信息系统(3)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91麻豆精品国产91久久久久久久久 | 精品一区三区 | 毛片3 | 新91视频在线观看 | 中文字幕乱码一二三区 | 中文字幕免费 | 麻豆激情网 | 久久久久久久久久久久久久国产 | 精品国产亚洲AV | 人妻丝袜一区 | 天天射天天操天天干 | 欧美日韩一级黄色片 | 日韩高清一区二区 | 午夜污污 | 亚洲成人精品在线 | 午夜美女福利视频 | 国产日韩在线免费观看 | 一本色道久久综合熟妇 | 午夜影院啊啊啊 | 你懂的在线观看网址 | 亚洲网站在线 | 亚洲国产成人自拍 | 无码人妻精品一区二区蜜桃网站 | 就要干就要操 | xxxx亚洲 | 亚色中文 | 97国产精品视频人人做人人爱 | 中文字幕日韩久久 | 欧美激情精品久久久久久免费 | 成人学院中文字幕 | 国内精品人妻无码久久久影院蜜桃 | 欧美一级片一区二区 | 久久色网站 | 亚洲一区二区三区人妻 | 久久精品久久久久久 | 亚洲欧美视频在线播放 | 在线sese | 自拍偷拍视频在线观看 | 国产精品久久久久永久免费看 | 视频一区二区在线观看 | 一本色道久久hezyo无码 | 中文字幕一区二区三区人妻 | 国产高清一区 | 亚洲视频在线观看网址 | 欧美激情欧美激情在线五月 | 成年人www| 先锋影音av在线资源 | 久久一区二 | 国产一区二区三区四区hd | 性欧美视频在线观看 | 亚洲欧美日本一区二区 | av我不卡 | 国产理论片在线观看 | 精品国产专区 | 无码任你躁久久久久久老妇 | 午夜肉伦伦 | 性色欲网站人妻丰满中文久久不卡 | 国产精品色在线 | 欧美日本二区 | 伊人色播| 国产精品国产精品 | 成人午夜在线观看视频 | 四虎黄色网址 | av免费观看大全 | 日韩欧美在线观看免费 | 中文字幕在线免费视频 | 免费一二区| 欧美日韩一区二区中文字幕 | 一区二区三区亚洲精品 | 天天曰天天操 | 影音先锋一区 | 久久中文一区 | 人人草在线观看 | 久久水蜜桃 | 欧美成性色 | 成人免费毛片网站 | 老司机深夜免费福利 | 中文字幕在线观看av | 岛国免费av | 欧美日本高清视频 | 国产精品无码人妻一区二区在线 | 免费国产高清 | 欧美zzz物交 | 美女高潮网站 | 中文字幕av解说 | 国产精品污网站 | 日韩影视一区二区三区 | 久草欧美视频 | 亚洲一区二区三区午夜 | 欧美成人a视频 | 欧美一级高清片 | 黄色片免费视频 | 国产伦精品一区二区三区 | 日韩性高潮| 就去色综合 | 一级片av | 毛利兰被扒开腿做同人漫画 | 国产伦视频| 女~淫辱の触手3d动漫 |