gdal2tiles切图

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源码阅读

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值