GIS開發(fā):開源庫計(jì)算經(jīng)緯度坐標(biāo)和瓦片坐標(biāo)
使用github的開源庫,根據(jù)經(jīng)緯度坐標(biāo)和地圖的縮放級別,計(jì)算地圖瓦片的編號,從而獲取到范圍內(nèi)的地圖切片。
開源庫地址:
https://github.com/CntChen/tile-lnglat-transform
“高德/百度/谷歌/騰訊/必應(yīng)的地圖經(jīng)緯度坐標(biāo)和瓦片坐標(biāo)相互轉(zhuǎn)換”
基于JavaScript的庫,使用這個(gè)可以做什么呢,最常見的就可以爬取地圖切片,那些地圖下載器的抓取地圖切片也是這個(gè)原理。
在nodejs中,用npm安裝一下這個(gè)包,就可以用了。
npm install --save? tile-lnglat-transform
以計(jì)算高德地圖的為例:
定義:
const?TileLnglatTransform?=?require('tile-lnglat-transform');
將經(jīng)緯度轉(zhuǎn)換成切片編號的方法:
const??tileinfo?=?
?TileLnglatTransform.TileLnglatTransformGaode.lnglatToTile(lng,lat,level);
tileinfo .tileX;地圖當(dāng)前級別瓦片的橫向編號;
tileinfo .tileY,;地圖當(dāng)前級別瓦片的縱向編號;
將某個(gè)地圖級別瓦片上的像素坐標(biāo),轉(zhuǎn)換經(jīng)緯度坐標(biāo),地圖瓦片大小一般是256*256,pixelX,pixelY是在此切片上的相對像素值,假如想算一個(gè)切片的坐標(biāo)范圍,只需要根據(jù)相對像素調(diào)整即可。
const??lnglat?=?
?TileLnglatTransform.TileLnglatTransformGaode.pixelToLnglat(pixelX, pixelY, tileX, tileY, level);
此外,還有l(wèi)nglatToPixel的方法,可以根據(jù)經(jīng)緯度,計(jì)算出所在級別的地圖瓦片,包括在瓦片上的像素信息。
參考文章:
https://github.com/CntChen/tile-lnglat-transform
https://www.amap.com/