gdal2tiles切图
文章目录
切图流程
从原始数据获取所需的最高级别的瓦片,更低级的瓦片只需从这些最高级瓦片一层一层生成.
这样速度更快:因为最高级的瓦片只能利用gdal从原始tif中获取,其速度受tif尺寸影响很大,且从tif上取得级别越低,单次所取范围越大,速度也越慢.举个实际的例子,从原始tif上获取某位置17级的瓦片的时间将远远大于从原始tif获取4张对应位置的18级瓦片,并将其合成的时间.
首先会读取元数据中的坐标范围信息,通过坐标范围在全球中的位置关系可以计算出需要生成的图片编号。如下图所示:
图中的白色实际为透明色,原因是该等级下数据范围只占那么大。
Cesium前端加载逻辑相同,首先获取tilemapresource.xml
中的extent,当extent与当前浏览器窗口有交集时才会请求瓦片。
瓦片合并
应用场景:
高分辨率的tif影像数据量高达上百GB,如果直接对其进行切片操作会比较费时,可以先将其分割成多个tif,每个tif分别执行切片操作,最后将瓦片合并到一个文件夹供前端调用。
存在问题:
每个tif切片时都可能会生成同文件夹且同名的瓦片文件,如果直接进行文件夹复制,会导致图像被覆盖,无法展示完整范围的图像。如下图所示:
正常想要的应该是左下角的效果,但是如果直接用文件夹复制,就会导致最后只保留右侧中的一张图片。
问题解决:
在每个tif生成切片时,直接往同一个文件夹生成,在生成png时先判断如果文件夹名称相同且png名称相同的话,需要执行图片合并操作,将两张图片合并为1张。(gdal2tiles.py中实际上有这部分逻辑,需要在调用命令行时加上重采样参数-r antialias
,里面会执行Image.composite
方法,但是需要注意每个tif切片时对于tilemapresource.xml的更新需要在源码上修改一下,源码中是直接对tilemapresource.xml进行覆盖,应该是进行比较后动态更新里面的数值)
注:如果涉及到切片合并,需要保证待合成的图像都是在antialias重采样模式下生成的,才能够成功合并,否则可能出现黑图情况。
参考链接
[1]. gdal2tiles.py
[2]. gdal2tiles.py翻译版
[3]. gdal2tiles工具
[4]. How it works(14) GDAL2Tiles源码阅读
本文转自 https://blog.csdn.net/wml00000/article/details/130517935?spm=1001.2014.3001.5502,如有侵权,请联系删除。
标签:wml00000,切图,切片,文件夹,瓦片,gdal2tiles,tif From: https://www.cnblogs.com/hustshu/p/17592641.html