緣起
使用Leaflet
做點緩沖,也就是調(diào)用“L.circle()
”繪制圓形贴捡,傳入半徑100米,繪制出來的圓卻覆蓋了全球村砂,當(dāng)時就猜想烂斋,應(yīng)該是把半徑按100度來繪制了,但看了Leaflet API
介紹础废,里面描述的半徑單位就是用的“米”汛骂。
然后想起來這次用的地圖底圖為天地圖,在初始化地圖時评腺,通過修改crs
帘瞭,將地圖坐標(biāo)系修改為了“EPSG:4490
”(通過Proj4Leaflet定義),而Leaflet
默認(rèn)采用的是“EPSG:3857
”蒿讥,看來問題應(yīng)該是出在了這里蝶念。
于是通過三角函數(shù),將100米換算成度再次繪制芋绸,可以成功繪制媒殉。
const newRadius = Math.asin(radius / 6371000) * 180 / Math.PI //將米轉(zhuǎn)為度,6371000為地球赤道半徑
然后就引發(fā)了思考摔敛,“EPSG:4490
”是地理坐標(biāo)系廷蓉,也叫球面坐標(biāo)系,默認(rèn)應(yīng)該是個球舷夺,而二維地圖是個平面苦酱,球要在平面展示就需要投影,那么未經(jīng)投影的“EPSG:4490
”坐標(biāo)系是如何繪制到平面上的呢给猾?
接下來就研究下地理坐標(biāo)系和平面坐標(biāo)系疫萤,以及未經(jīng)投影的地理坐標(biāo)系到底是如何顯示為平面地圖的。
基礎(chǔ)概念
首先了解幾個基礎(chǔ)概念:
地理坐標(biāo)系:或稱球面坐標(biāo)系敢伸,參考平面是橢球面扯饶,一般是指由經(jīng)度、緯度和高度組成的坐標(biāo)系,能夠標(biāo)示地球上的任何一個位置尾序。常見的地理坐標(biāo)系有WGS84
(EPSG:4326
)钓丰、CGCS2000
(EPSG:4490
)、GCS_Xian_1980
(EPSG:4610
)每币。
投影:地理坐標(biāo)系是三維的携丁,而我們要在地圖或者屏幕上顯示就需要轉(zhuǎn)化為二維,這個過程被稱為投影兰怠。常用的投影有墨卡托投影(Mercator
)梦鉴、高斯-克呂格投影、偽墨卡托投影(Web Mercator
)揭保。
投影坐標(biāo)系:經(jīng)過投影后的坐標(biāo)系就是投影坐標(biāo)系肥橙,坐標(biāo)單位一般是米、千米等秸侣〈娣ぃ可以認(rèn)為投影坐標(biāo)系就是地理坐標(biāo)系+投影。常見的投影坐標(biāo)系有EPSG:3857
(也就是WGS84
+偽墨卡托投影)味榛。
經(jīng)緯度等間隔直投
了解上面這幾個概念后椭坚,回到開頭的問題,地理坐標(biāo)系“EPSG:4490
”或者“EPSG:4326
”搏色,是如何顯示到平面上的呢藕溅?
其實在我們使用二維方式展示地圖,而坐標(biāo)系為地理坐標(biāo)系時继榆,用到了是一種特殊的投影方式,經(jīng)緯度等間隔直投汁掠。
經(jīng)緯度等間隔直投:英文叫法是Platte Carre projection
略吨,是等距矩形投影(Equirectangular projection
)基準(zhǔn)點緯度取0°(赤道)時的特殊情況。它的特點是相同的經(jīng)緯度間隔在屏幕上的間距相等考阱,沒有復(fù)雜的坐標(biāo)變換翠忠。我們可簡單的理解為,在笛卡爾坐標(biāo)系中乞榨,將赤道作為X軸秽之,子午線作為Y軸,然后把本來應(yīng)該在南北兩極相交的經(jīng)線一根一根屢直了吃既,成為了互相平行的經(jīng)線考榨,而每條緯線的長度也在這個過程中都變?yōu)榕c赤道等長。
在經(jīng)緯度等間隔直投中鹦倚,經(jīng)度范圍是-180
到180
河质,緯度范圍是-90
到90
,因此他的地圖是長方形,且長寬比是2:1
掀鹅。
在地圖API
中散休,當(dāng)定義地圖坐標(biāo)系為地理坐標(biāo)系時,一般會默認(rèn)采用這種投影方式乐尊,這也是我們能看到地理坐標(biāo)系的平面地圖的原因戚丸。
但是經(jīng)緯度等間隔直投有個很明顯的缺點,就是在低緯度地區(qū)長度扔嵌、角度限府、面積、形狀變化比較小对人,越向高緯度谣殊,水平距離變長越大,很小的緯圈都變得和赤道一樣長牺弄,但是經(jīng)線長度始終保持不變姻几。這樣就導(dǎo)致要素經(jīng)過投影后會角度會發(fā)生變化,比如非常標(biāo)準(zhǔn)的十字路口势告,兩條路“非常垂直”蛇捌,而經(jīng)過“經(jīng)緯度等間隔直投”投影后,兩條路成了斜交咱台。
正是由于經(jīng)緯度直投的這些缺點络拌,特別是投影后角度的變化,導(dǎo)致它在一些領(lǐng)域是無法應(yīng)用的回溺,比如說航海中航線的表達(dá)(本來的直角轉(zhuǎn)彎春贸,在地圖上顯示的可能是鈍角或銳角)。
當(dāng)然遗遵,要把球面坐標(biāo)投影到平面展示萍恕,不可避免都會產(chǎn)生這樣那樣的變形,而每種地圖投影也都有自己的優(yōu)點和缺點车要,這就需要我們根據(jù)不同的應(yīng)用場景來選擇合適的投影了允粤。
接下來我們再了解下日常最常見的一種投影,墨卡托投影翼岁,然后再將經(jīng)緯度等間隔直投和墨卡托投影做下對比类垫,這樣可以更直觀的觀察出各自的優(yōu)缺點。
墨卡托投影
墨卡托投影琅坡,又名“等角正軸圓柱投影”悉患,荷蘭地圖學(xué)家墨卡托(Mercator)在1569年擬定,假設(shè)地球被圍在一個中空的圓柱里脑蠕,其赤道與圓柱相接觸购撼,然后再假想地球中心有一盞燈跪削,把球面上的圖形投影到圓柱體上,再把圓柱體展開迂求,這就是一幅標(biāo)準(zhǔn)緯線為零度(赤道)的“墨卡托投影”繪制出的世界地圖碾盐。
墨卡托投影最大優(yōu)點就是在地圖上保持方向和角度的正確,如果循著墨卡托投影地圖上兩點間的直線航行揩局,方向不變毫玖,可以一直到達(dá)目的地,因此它對船艦在航行中定位凌盯、確定航向都具有有利條件付枫,給航海者帶來很大方便。這也是目前的大部分互聯(lián)網(wǎng)地圖選擇墨卡托投影(偽墨卡托投影或者基于墨卡托投影做加密偏移)的原因之一驰怎,因為人們希望在地圖上看到的地物與實際地物長得相似阐滩,并且導(dǎo)航方向不變。
Web Mercator
投影县忌,也就是“EPSG:3857
”掂榔,也被稱為“偽墨卡托投影”,這個投影方法是Google Map
最先發(fā)明并使用的症杏,它的地理上的不嚴(yán)謹(jǐn)性在于装获,在投影過程中,將表示地球的橢球面作為正球面處理厉颤,傳說中是因為谷歌程序員懶得用橢球面來編程計算屏幕坐標(biāo)...想具體了解穴豫,可以參考Web Mercator 公開的小秘密
對于墨卡托投影來說,也有個明顯的缺點逼友,就是越到高緯度精肃,大小扭曲越嚴(yán)重,到兩極會被放到無限大帜乞,因此墨卡托投影并不能表現(xiàn)出南北兩極肋杖。為了方便使用,互聯(lián)網(wǎng)地圖使用的Web Mercator
投影挖函,通過對兩極地區(qū)的裁剪,把地圖搞成一個正方形浊竟,這樣在定義縮放級別怨喘、地圖切圖等處理時就會更清晰易懂。具體相關(guān)原理計算可參考http://www.reibang.com/p/434feafd40a7振定。
通過下圖必怜,可以看到墨卡托投影下每個國家的大小和實際大小的差異。
下面兩張圖片來自天地圖網(wǎng)站截圖后频,我們可以看出梳庆,地圖層級同樣是18級暖途,黑龍江漠河(上圖)與海南三亞(下圖)的地圖比例尺差別還是很大的。
經(jīng)緯度等間隔直投 VS 墨卡托投影
下圖來自 Mercator vs. well…not Mercator (Platte Carre)膏执,生動地說明經(jīng)緯度等間隔直投(Platte Carre
)和 墨卡托投影(Mercator
)這兩種投影下的失真情況:
左圖表示地球球面上大小相同的圓形驻售,右上為墨卡托投影,投影后仍然是圓形更米,但是在高緯度時物體被嚴(yán)重放大了欺栗。右下為經(jīng)緯度等間隔直投,圓的大小變化相對較小征峦,但是高緯度時的圖像明顯被拉長了迟几。
查看天地圖傳統(tǒng)版網(wǎng)站https://map.tianditu.gov.cn/2020/,可以切換下投影方式栏笆,對比看一下不同投影的區(qū)別(可以把地圖拖到哈爾濱地區(qū)类腮,區(qū)別更明顯)奴愉。通過下面動態(tài)圖可以看出不同投影在哈爾濱地區(qū)的差異痛侍,其中“球面墨卡托”,采用的是web墨卡托投影(EPSG:3857
)翩剪;“經(jīng)緯度”七婴,采用的是EPSG:4326
的經(jīng)緯度等間隔直投祟偷。
總結(jié)
- 未經(jīng)投影的地理坐標(biāo)系之所以可以顯示為平面地圖,是因為它默認(rèn)采用了經(jīng)緯度等間隔直投的投影方式打厘。
- 大部分互聯(lián)網(wǎng)地圖都是采用
Web Mercator
(EPSG:3785
)修肠,或者是基于Web Mercator
做了加密偏移。 - 經(jīng)緯度等間隔直投在高緯度地區(qū)的平面變形嚴(yán)重户盯,大小和角度都會發(fā)生明顯變化嵌施。
-
Web Mercator
在高緯度地區(qū)的平面會明顯被拉大,但是角度不會發(fā)生變化莽鸭。 - 對于地圖投影吗伤,沒有最好的,只有最合適的硫眨,需要根據(jù)自己的應(yīng)用場合來選擇足淆。
參考資料:
- https://blog.csdn.net/kikitamoon/article/details/46124935
- https://idvux.wordpress.com/2007/06/06/mercator-vs-well-not-mercator-platte-carre/
- https://en.wikipedia.org/wiki/Map_projection
- https://en.wikipedia.org/wiki/Equirectangular_projection
- https://en.wikipedia.org/wiki/Mercator_projection
- http://www.reibang.com/p/434feafd40a7
原文地址:http://gisarmory.xyz/blog/index.html?blog=gis-coordinate-projection
歡迎關(guān)注《GIS兵器庫》
本文章采用 知識共享署名-非商業(yè)性使用-相同方式共享 4.0 國際許可協(xié)議 進行許可。歡迎轉(zhuǎn)載礁阁、使用巧号、重新發(fā)布,但務(wù)必保留文章署名《GIS兵器庫》(包含鏈接: http://gisarmory.xyz/blog/)姥闭,不得用于商業(yè)目的丹鸿,基于本文修改后的作品務(wù)必以相同的許可發(fā)布。