我有大约211个栅格,每个栅格代表世界上的每个区域。下面是其中一个栅格的gdalinfo。除了关注的区域外,它们都是相同的。值总是在1-6之间。
我想把它们合并成一个巨大的光栅,我已经成功地做到了这一点,首先建立一个VRT,然后把VRT写入一个文件:
gdalbuildvrt.exe -b 1 -q -input_file_list my_files.txt global_file.vrt
gdal_translate.exe -q -co PREDICTOR=2 -co COMPRESS=LZW -of GTiff -co BIGTIFF=YES -co TILED=YES -co NUM_THREADS=ALL_CPUS global_file.vrt global_file.tif
结果是大约15 GB的大小。
但是我的问题是,每个国家经常有重叠的区域。在这种情况下,我需要取最大光栅/像素值。但是gdal_translate没有这样做,它只取最后写入的值。
我读到了PixelFunction(https://gis.stackexchange.com/questions/350233/how-can-i-modify-a-vrtrasterband-sub-class-etc-from-python),并试图实现它,但我一直遇到内存问题。
有没有人有任何关于内存安全的方法来合并一个大的光栅列表,并在它们重叠的地方取最大值的想法?如果最好的方法是PixelFunction,那么让我知道,我会提供更多关于错误的细节。
谢了,詹姆斯
1条答案
按热度按时间j91ykkif1#
尝试减小输出块大小,使用
BLOCKXSIZE=128
和BLOCKYSIZE=128
:这将需要明显更少的内存。
如果这不起作用,你的下一个选择是将你所有的输入文件转换成128x128平铺的geotiffs.唉,在GDAL〈3.7中你不能改变VRT驱动程序的块大小,这是3.7中的东西.