Ver API de Python . También este código puede ayudarte a entender cómo usar gdal.Translate
en python:
import gdal
from gdalconst import GA_ReadOnly
def convert_raster_to_LZW_compression(input_raster):
basename = os.path.basename(input_raster)
basename_without_extention, extention = os.path.splitext(basename)
dirname = os.path.dirname(input_raster)
output_raster = os.path.join(dirname, f'{basename_without_extention}_LZW_CONVERTED{extention}')
input_dataset = gdal.Open(input_raster, GA_ReadOnly)
InfoOptions = gdal.InfoOptions(format='json')
input_dataset_info = gdal.Info(input_dataset, options=InfoOptions)
try:
compression = input_dataset_info['metadata']['IMAGE_STRUCTURE']['COMPRESSION']
except KeyError:
compression = None
if compression == 'LZW':
print(f'Raster compression is {compression}')
input_dataset = None # закрываем файлы
return 'skip'
else:
translateOptions = gdal.TranslateOptions(creationOptions=['COMPRESS=LZW'])
gdal.Translate(output_raster, input_dataset, options=translateOptions)
input_dataset = None # закрываем файлы
if not os.path.isfile(output_raster):
print(f'Ошибка! Файл не конвертирован в LZW сжатие:\n{output_raster}')
return False
else:
output_dataset = gdal.Open(output_raster, GA_ReadOnly)
output_dataset_info = gdal.Info(output_dataset, options=InfoOptions)
output_dataset = None # закрываем файлы
out_compression = output_dataset_info['metadata']['IMAGE_STRUCTURE']['COMPRESSION']
if out_compression == 'LZW':
return True
else:
print(f'Ошибка! Файл был сохранён, но не в LZW сжатие:\n{output_raster}\nУдаляю файл...', end='')
os.remove(output_raster)
print('OK')
return False