feat: 增加数据获取时的异常处理.

This commit is contained in:
谢泓 2025-01-12 02:51:27 +08:00
parent 5ca6574780
commit 0d3f6e212c

View File

@ -55,6 +55,9 @@ def open_hls(
da_org = rxr.open_rasterio(url, chunks=chunk_size, mask_and_scale=False).squeeze(
"band", drop=True
)
# (Add) 若未获取到数据, 则返回 None
if da_org is None:
return None
# (Add) 复制源数据进行后续操作, 以便最后复制源数据属性信息
da = da_org.copy()
@ -215,13 +218,24 @@ def process_granule(
if not os.path.isfile(output_file):
# Open Asset
da = open_hls(url, roi, clip, scale, chunk_size)
# (Add) 若返回的da为None, 则表示该url对应的文件不存在/无法访问, 再次尝试无果后将会跳过
if da is None:
logging.warning(
f"Asset {url} not found in {output_dir}. Try again."
)
# 再次尝试下载
da = open_hls(url, roi, clip, scale, chunk_size)
if da is None:
logging.warning(f"Asset {url} still not found. Skipping.")
continue
# Apply Quality Mask if Desired
if quality_filter:
da = da.where(~qa_mask)
# Write Output
if "FMASK" in output_name:
if "FMASK" in output_name and not quality_filter:
# (Add) 若 quality_filter=False, 则需要将质量层文件另外保存
da.rio.to_raster(raster_path=output_file, driver="COG")
else:
# (Add) 固定输出为 float32 类型, 否则会默认 float64 类型