def apply_mask(mask_file, tmp_output_file, output_file, jpeg):
"""
Parameters
----------
mask_file: mask file path
tmp_output_file: intermediate cropped geotiff before mask application
output_file: output geotiff path
jpeg: boolean, whether to produce jpeg or not
-------
"""
mask = get_mask(mask_file)
out_ds = gdal.Open(tmp_output_file, gdal.GA_Update)
out_band = out_ds.GetRasterBand(1)
out_data = out_band.ReadAsArray()
no_data_value = out_band.GetNoDataValue()
log.info('Found NoDataValue {} for file {}'.format(
no_data_value, os.path.basename(tmp_output_file)))
if no_data_value is not None:
out_data[mask] = no_data_value
else:
log.warning('NoDataValue was not set for {}'.format(tmp_output_file))
log.info('Manually setting NoDataValue for {}'.format(tmp_output_file))
out_band.WriteArray(out_data)
out_ds = None # close dataset and flush cache
# move file to output file
shutil.move(tmp_output_file, output_file)
log.info('Output file {} created'.format(tmp_output_file))
if jpeg:
dir_name = os.path.dirname(output_file)
jpeg_file = os.path.basename(output_file).split('.')[0] + '.jpg'
jpeg_file = os.path.join(dir_name, jpeg_file)
cmd_jpg = ['gdal_translate', '-ot', 'Byte', '-of', 'JPEG', '-scale',
output_file,
jpeg_file] + COMMON
subprocess.check_call(cmd_jpg)
log.info('Created {}'.format(jpeg_file))
crop_mask_resample_reproject.py 文件源码
python
阅读 16
收藏 0
点赞 0
评论 0
评论列表
文章目录