diff --git a/HLS_SuPER/HLS_PER.py b/HLS_SuPER/HLS_PER.py index 14c153b..747fe9f 100644 --- a/HLS_SuPER/HLS_PER.py +++ b/HLS_SuPER/HLS_PER.py @@ -196,7 +196,11 @@ def process_granule( # Open Quality Layer qa_da = open_hls(quality_url, roi, clip, scale, chunk_size) # Write Output - qa_da.rio.to_raster(raster_path=quality_output_file, driver="COG") + # (Add) 添加压缩选项参数 compress + # compress 参数是源自 rioxarray 继承的 rasterio 的选项, 可以参考 https://rasterio.readthedocs.io/en/latest/api/rasterio.enums.html#rasterio.enums.Compression + # 若未指定则默认为 LZW, 生成速度较快, 但文件较大 + # 设置为 DEFLATE 是为了与官网直接下载文件一致且输出文件更小, 但生成速度略慢, 单张约慢 15s. + qa_da.rio.to_raster(raster_path=quality_output_file, driver="COG", compress="DEFLATE") else: qa_da = open_hls(quality_output_file, roi, clip, scale, chunk_size) logging.info( @@ -236,11 +240,11 @@ def process_granule( # Write Output if "FMASK" in output_name and not quality_filter: # (Add) 若 quality_filter=False, 则需要将质量层文件另外保存 - da.rio.to_raster(raster_path=output_file, driver="COG") + da.rio.to_raster(raster_path=output_file, driver="COG", compress="DEFLATE") else: # (Add) 固定输出为 float32 类型, 否则会默认 float64 类型 da.rio.to_raster( - raster_path=output_file, driver="COG", dtype="float32" + raster_path=output_file, driver="COG", dtype="float32", compress="DEFLATE" ) else: logging.info(