GIS杂谈:底图切片的换算
现在网上有各种类型的地图下载器,通过设置地图范围,能够将一块区域中指定级别的底图切片下载下来,导出成切片文件夹,或者拼成一张影像图,这种下载涉及到底图切片的换算,下边借助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次方)
有经纬度坐标(x,y),转换成墨卡托坐标(mx,my),
对应的(xyz)像素坐标:
px=(mx-ox)/resolution;
py=(my-oy)/resolution;
再根据每张切片的尺寸,就能计算出切片的索引数,这样就能进行下载了,在js的开发中,推荐使用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次方)
有经纬度坐标(x,y,
对应的(xyz)像素坐标:
px=(x-ox)/resolution;
py=(y-oy)/resolution;
再根据每张切片的尺寸,就能计算出切片的索引数,这样就能进行下载了。