tianditu切片下载计算
目前互联网上有各种各样的地图下载工具,可以下载切片、矢量等地图数据,地图切片数据下载能够直接进行发布,或者拼接成地图影像数据,在平台中加载并进行处理,本文以tianditu的切片数据为样例,如何进行切片的行列号计算,请求对应的切片数据。
tianditu经纬度的切片地图范围为:[-180,-90,180,90],切片地图的原点是-180,90,地图级别从1开始,第一级别的地图切片尺寸为横向512px,纵向为256px,由两张256*256的切片组成,第1级地图的分辨率为360/512,地图每增加一级,分辨率对应缩小到上一级的1/2。切片序号的顺序是从原点处开始的,越靠近地图原点,编号就越小。假如给定一个地图的经纬度范围[xmin,ymin,xmax,ymax],地图的第一级分辨率定义initResolution,initResolution=360/512,要获取地图切片的级别为level。
获取地图当前缩放级别的最小行号和列号:
列号= ((xmin- (-180)) / (initResolution/2^(level-1)))/256
行号=-1* ((ymax- 90) / (initResolution/2^(level-1))+0.5)/256
获取地图当前缩放级别的最大行号和列号:
列号= ((xmax- (-180)) / (initResolution/2^(level-1))+0.5)/256
行号=-1* ((ymin- 90) / (initResolution/2^(level-1)))/256
算式中的256分别为切片的宽高像素值,如有不同,需要根据切片实际尺寸计算,坐标计算的时候,需要减去中心点的值,再根据级别计算当前级别的分辨率。最小、最大行列号计算完成后,根据地图的基础url,加上缩放级别、行列号,就能使用http协议进行地图切片的下载,按照规则保存成图片即可进行下载。球面墨卡托的,需要将坐标转换成墨卡托,按照以上步骤进行计算下载,墨卡托的在线电子地图占比还是很高的,高德、百度、腾讯等都是。