GIS雜談:底圖切片的換算
現(xiàn)在網(wǎng)上有各種類型的地圖下載器,通過設置地圖范圍,能夠將一塊區(qū)域中指定級別的底圖切片下載下來,導出成切片文件夾,或者拼成一張影像圖,這種下載涉及到底圖切片的換算,下邊借助gdal2tile的python代碼,講一下大概的換算原理。?
參考地址:
https://github.com/wclwksn/gdal2tiles/blob/master/gdal2tiles/gdal2tiles.py ?
Web墨卡托(EPSG:3857) ?
坐標系范圍(單位:米):[-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244] ?
切片尺寸是256*256,中心點為(xyz)(ox,oy):[-20037508.342789244, 20037508.342789244]的情況,
地圖初始分辨率(第0級)是:initialResolution = 20037508.342789244 * 2 / 256 = 156543.03392804062 ?
第n級的分辨率是:resolution = initialResolution/(2的n次方) ?
有經(jīng)緯度坐標(x,y),轉換成墨卡托坐標(mx,my), ?
對應的(xyz)像素坐標:?
px=(mx-ox)/resolution;?
py=(my-oy)/resolution;?
再根據(jù)每張切片的尺寸,就能計算出切片的索引數(shù),這樣就能進行下載了,在js的開發(fā)中,推薦使用global-mercator類庫。??
wgs84/cgcs2000(EPSG:4326)
分成兩種情況:
第0級兩張切片:initialResolution = 180 / 256 = 0.703125 ?
第0級兩張切片:initialResolution = 180 / 256 = 1.40625 ?
切片尺寸是256*256,中心點為(xyz)(ox,oy):[-180, 90]的情況, ?
第n級的分辨率是:resolution = initialResolution/(2的n次方) ?
有經(jīng)緯度坐標(x,y, ?
對應的(xyz)像素坐標:?
px=(x-ox)/resolution;?
py=(y-oy)/resolution;?
再根據(jù)每張切片的尺寸,就能計算出切片的索引數(shù),這樣就能進行下載了。? ?