剪辑大型栅格ECW文件的最佳方法?


9

我正在尝试剪切较大的ECW(详细信息如下),但是光栅文件太大而无法完全处理。

以下ECW的一些详细信息

驱动程序:ECW / ERDAS压缩小波(SDK 5.0)

文件大小:50gb大小为450000、565081像素大小:0.15 0.15 COLORSPACE = RGB COMPRESSION_RATE_TARGET = 9 VERSION = 2波段数:4

我要裁剪的区域大约是原始文件的1/5。

这是我尝试不成功的方法:

  1. 使用Arcgis将ecw保存为tiff /其他格式...(我很快就放弃了)

  2. 使用了Qgis及其裁剪器工具...文件创建停留在40%左右。

  3. 除了Qgis以外,还使用gdal_translate从OSGeo4W中退出。(试图以为可以不使用Qgis释放一些内存就可以了)

  4. 使用gdal_retile的想法是,我会将图像切成小块,然后抓住想要的图像。命令“ gdal_retile -ps 10000 10000 -of ecw -tileIndex tile.shp -targetDir input.ecw这崩溃得更快”

有人有主意吗?

有关信息,我在具有16GB内存的i5-3470 3.2Ghz上运行Windows 7 64位。

Answers:


5

您可以尝试的其他想法:

  1. 使用-srcwin开关gdal_translate
  2. 具有-cutline和-crop_to_cutline以及-wm开关的gdalwarp。最后一个指定用于缓存的内存,并且可以让您解决在QGIS中使用Clipper遇到的问题(因为这本质上是相同的功能)
  3. QGIS栅格计算器将范围设置为所需的区域(比剪切器简单)。
  4. SAGA->具有多边形的剪辑网格-谁知道,这可能会提高内存效率。
  5. 使用Python和Numpy / SciPy编写解决方案的代码,仅将栅格的一部分读取到内存中并保存。

我怀疑进行一个非常简单的裁切(使用栅格计算器或gdal_translate中的-srcwin开关)会比使用多边形裁切节省内存,因为您没有进行几何检查和转换。选项5应该使用最少的内存,因为您只阅读需要的内容。如果您需要“如何”(适应逐块阅读和编写的内容),请看一下本教程


感谢您的回答!我将尝试SAGA,如果它不起作用,我会去找Numpy。
2013年

5

如果您知道感兴趣区域的坐标(如果地理参考),则可以使用gdal的工具gdal_translate直接剪切它:

gdal_translate -projwin [ulx uly lrx lry] infile outfile  

如果不使用这样的-srswin标志:

gdal_translate -srcwin [xoff yoff xsize ysize] infile输出文件。

另一种选择是使用gdalbuildvrt构建指向初始数据集的“虚拟”栅格(几千字节)。

gdalbuildvrt -te [xmin ymin xmax ymax] infile outfile.vrt

不幸的是,使用gdalbuildvrt时需要地理参考文件。

剪辑后,不要忘记创建金字塔以便于查看。以下命令将构建使用DEFLATE(无损)算法压缩的外部金字塔:

gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16

最后,您还可以计算统计信息,以避免特定商业程序出现一些愚蠢的问题:

gdalinfo -stats outfile

感谢您的回答。我已经建立了一个虚拟栅格并运行<code> gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE outfile 2 4 8 16 </ code>我不太确定为什么收到以下错误消息ERROR 1:由于丢失而无法创建TIFF文件DEFLATE的编解码器。概述构建失败。
2013年

如果它们描述了您的情况,请检查错误qgis-bug:8782osge4w-bug:382。同时,尝试在不使用任何压缩算法的情况下创建概述,或者选择其他算法。
尼克

看来我分两步进行了操作:gdaladdo -ro input.vrt 2 4 8 16然后gdaladdo -ro --config COMPRESS_OVERVIEW DEFLATE input.vrt 2 4 8 16。我的目标是最终获得ECW,因此我尝试gdal_translate -of ECW input.vrt output.ecw 了以下错误:0ERROR 6: GDALDriver::Create() ... no create method implemented for this format.
蓝色

@blue ECW是专有格式,需要特殊处理。请先检查gdal是否可以使用写入ECW gdalinfo --formats。如果您没有在列表中看到ECW,请尝试按照以下说明进行操作:floralia.pt/node/438
nick13年

0

直接使用“剪辑” gdalwarp应该可以工作(我知道这是一个令人困扰的问题:18个月的IRL就像互联网时代的地质时代一样)。

我有一个70Gb天线(ECW,10cm / px处为94000x81000像素),GDAL可以使用shapefile任意剪切它

gdalwarp -cutline [clipfile] -crop_to_cutline [infile] [outfile]

在Windows命令行中。(我意识到这种解决方案需要为目标目标区域构建一个shapefile,但这并不是GIS所面临的最大挑战)。

提取半郊区大小的块大约需要0.4秒;将文件切成四分之一的时间需要4秒。我的机器的规格没有太大不同(i7-4770 @ 3.4GHz,16GB RAM,Win7-64 Ultimate)。


gdalwarp已经被提及。有关性能和特定示例图像大小的信息是一个受欢迎的补充,但实际上这应该是对gis.stackexchange.com/a/74450/108的注释(也欢迎使用带有代码格式的命令行进行建议的编辑;更容易阅读)
马特·威尔基(Matt wilkie
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.