如何使用GDAL从栅格数据集中剪切“平铺图像”?


22

我正在开发一个需要根据给定栅格数据集创建图块(jpeg)的应用程序。我最初的想法是使用gdal2tiles.py,但它的性能似乎可以得到改善。

这使我提出以下问题:使用GDAL从栅格数据集中剪切“平铺图像”的最快方法是什么?“平铺图片”是指简单的jpeg或png。

在我的原型中,我使用MapServer C#MapScript绑定来完成这项工作。也就是说,我创建一个地图对象,遍历需要剪切的所有平铺边界,设置地图对象的范围,然后保存生成的图像。这种方法的性能明显优于gdal2tiles.py,但是我想知道是否不能更快地使用GDAL。谁能用GDAL方法建议类似的工作流程?

编辑:今天进行了一些进一步的研究之后,我就找到了答案。如果您已经下载了FWTools,则csharp \ apps文件夹包含许多用于演示C#GDAL绑定的类。就我而言,GDALRead.cs和GDALReadDirect.cs是我想要的。


2
@ vadp,@ markusn,@ mapperz和其他所有人-请进行描述。除了链接之外,还有一两句话说明您认为该工具值得关注的原因以及与其他工具的区别将很有帮助。我们希望答案在将来以及将来都有用。迟早会出现链接损坏的情况,如果我们只有URL,那么很难找到该项目的下一个实施地点。
马特·威尔基2011年

4
嗨,user890,您能否发布问题的最终解决方案并将其标记为已关闭?在这种情况下,听起来像使用特定于语言的绑定可以为您提供所需的性能。
scw

我不能在自己的帖子中添加评论:(但是gdal_tiler.py也支持多处理,但是以一种非常蛮力的方式:它只是一次处理'n'个源。尽管如此,它还是会产生一些积极的效果:)
Vadim

Answers:




1

在我公司中,我们使用gdal_warp(这是我们知道gdal2tiles存在之前)编写的自定义python脚本。它比g2t快,尤其是当我们将其重写为在许多内核上运行时(使用python线程池)。它还产生了更高质量的图块(g2t上的lanczos插值似乎效果不好,在gdal_warp中生成的图块令人惊讶)。

编写脚本需要一点点工作,您需要手动计算生成的边界框,设置一些投影选项,等等。



0

另一种选择是使用TileCache(WMS-C)。尽管我从未使用过gdal2tiles,但我不希望TileCache会带来更高的性能。

无论如何,以下策略可以加快切片速度:

  • Metatiling,如果使用TileCache(我想知道gdal2tiles是否具有类似功能)。
  • 如果栅格数据很大,则使用ECW之类的格式。由于此格式具有部分解压缩功能,因此使用此格式可以显着提高性能。

0

http://code.google.com/p/tilers-tools中的 gdal_tiler.py脚本可能是一个有用的选项。

通常,与gdal2tiles.py相比,它表现出非常好的性能,并且可以与任何GDAL源(数据集)一起使用,尤其是,它不需要将源数据集转换为RGB。


-1

Gdal2tiles_parallel https://gitlab.com/GitLabRGI/erdc/geopackage-python如果使用geopackage或MBTILES,则无需使用python,而可以使用gdal_translate.EXE在本地完成。您还需要运行gdaladdo以添加多个缩放级别。我也为qgis桌面使用qtiles / qmetatiles。仍然没有任何产品可以与maptiler专业版商业软件竞争。如果您需要平铺文件夹,只需使用mbUtil python将MBTILES转换为TMS或XYZ


链接不再有效
-AndrewHarvey

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.