GIS開發(fā):地圖中的數(shù)學(xué)計算(Mercator)
在地圖的開發(fā)中,會涉及到各種的數(shù)學(xué)計算,比如距離、角度計算等,經(jīng)緯度坐標(biāo)系的情況下,地圖使用的坐標(biāo)是經(jīng)緯度的形式,單位是度,而計算距離的時候,結(jié)果是米制單位,這就需要其中有一個轉(zhuǎn)換,或者存在對應(yīng)的計算公式,本文對web mercator坐標(biāo)系的地圖中數(shù)學(xué)計算進(jìn)行一個簡單說明。
坐標(biāo)系的說明,參見以下網(wǎng)址:
http://epsg.io/3857通過坐標(biāo)系的說明,可以看到Mercator坐標(biāo)系單位是米,投影坐標(biāo)系范圍是-20026376.39 -20048966.10;20026376.39 20048966.10,經(jīng)緯度的范圍是-180.0 -85.06;180.0 85.06。
高德、百度、openstreetmap這些常用的互聯(lián)網(wǎng)地圖,都是基于web Mercator的坐標(biāo)系,在此坐標(biāo)系的地圖上,我們要做數(shù)學(xué)計算時,可以將使用的經(jīng)緯度坐標(biāo),轉(zhuǎn)成Mercator的投影坐標(biāo)進(jìn)行計算,以地圖東西向?yàn)闄M軸、南北向?yàn)榭v軸,建立坐標(biāo)系進(jìn)行計算。
經(jīng)緯度和Mercator互轉(zhuǎn)網(wǎng)上有開源庫:
https://github.com/CAfor2015/WGS84_WebMercator
簡單的數(shù)學(xué)計算方式例子:
?坐標(biāo)點(diǎn)的x、y方向移動N米:將坐標(biāo)轉(zhuǎn)換之后,加減對應(yīng)的米數(shù),在轉(zhuǎn)換成經(jīng)緯度坐標(biāo)標(biāo)繪點(diǎn);
?地圖上N米半徑畫圓:設(shè)定圓上點(diǎn)數(shù),按照三角函數(shù)sin、cos相乘半徑,計算x、y方向移動的距離,連成面狀圖層;
地圖上點(diǎn)到直線的最近距離:點(diǎn)連接線的起點(diǎn)成直線,和已知直線計算夾角,根據(jù)點(diǎn)到起點(diǎn)的距離,計算點(diǎn)到直接的最近距離;
...其他的可參見數(shù)學(xué)函數(shù)的方式計算
轉(zhuǎn)換Mercator的投影坐標(biāo),變換可計算的坐標(biāo)系值,就能很方便的進(jìn)行計算了。對于cgcs2000和球面的經(jīng)緯度數(shù)學(xué)計算,以后有時間進(jìn)行分享。