我正在尝试堆叠栅格.tif文件,我有12个.tif文件,但我也想在python中压缩输出的堆叠文件。
这是我当前用于文件堆叠的工作代码,但是堆叠后文件的大小非常大
from osgeo import gdal
outvrt='/vsimen/Stacked.tif'
outtif='E:/Users/Compressed_files/Stacked.tif'
tifs=glob.glob('E:/Users/Compressed_files/*.tif')
outds=gdal.BuildVRT(outvrt,tifs,seperate=True)
outds=gdal.Translate(outtif,outds)
答案 0 :(得分:2)
您可以将TranslateOptions对象传递给您的gdalTranslate
调用,您可以在其中添加相关的creationOptions
进行压缩。
所以作为伪代码:
from osgeo import gdal
topts = gdal.TranslateOptions(creationOptions=['COMPRESS=LZW', 'PREDICTOR=2'])
outds=gdal.Translate(outtif,outds, options=topts)
当然,这些选项也可以是一个字符串或字符串数组-使用TranslateOptions
不是强制性的。
此外,伪代码中使用的压缩设置仅是示例。为了获得最大收益,您应该选择适合您数据的选项。
这是documentation on available options for GeoTiffs的摘录:
COMPRESS = JPEG / LZW / PACKBITS / DEFLATE / CCITTRLE / CCITTFAX3 / CCITTFAX4 / LZMA / ZSTD / LERC / LERC_DEFLATE / LERC_ZSTD / WEBP / NONE]: 设置要使用的压缩率。 JPEG通常只应与 字节数据(每个通道8位)。但是从GDAL 1.7.0开始, 如果GDAL是使用内部libtiff和libjpeg构建的,则它是 可以使用12位JPEG压缩的TIFF读取和写入TIFF文件 文件(视为NBITS = 12的UInt16波段)。请参阅“ 8位和12位JPEG 更多信息,请参见TIFF”维基页面。 CCITT压缩仅应 与1位(NBITS = 1)数据一起使用。 LZW,DEFLATE和ZSTD压缩 可以与PREDICTOR创建选项一起使用。 ZSTD可用 从GDAL 2.3开始,使用内部libtiff且GDAL是否针对 libzstd> = 1.0,或者针对具有zstd支持的外部libtiff构建。 从GDAL 2.4开始使用LERC / LERC_DEFLATE / LERC_ZSTD 内部libtiff(对于LERC_ZSTD,请参见上述条件)。 默认为None。
NUM_THREADS =线程数/ ALL_CPUS :(从GDAL 2.1起)启用 通过指定辅助线程数进行多线程压缩。 值得慢压缩,例如DEFLATE或LZMA。将被忽略 JPEG。默认是主线程中的压缩。
PREDICTOR = [1/2/3]:设置LZW,DEFLATE和ZSTD的预测变量 压缩。默认值为1(无预测变量),2为水平 和3是浮点预测。