feat: 增加数据获取时的异常处理.
This commit is contained in:
parent
5ca6574780
commit
0d3f6e212c
@ -55,6 +55,9 @@ def open_hls(
|
|||||||
da_org = rxr.open_rasterio(url, chunks=chunk_size, mask_and_scale=False).squeeze(
|
da_org = rxr.open_rasterio(url, chunks=chunk_size, mask_and_scale=False).squeeze(
|
||||||
"band", drop=True
|
"band", drop=True
|
||||||
)
|
)
|
||||||
|
# (Add) 若未获取到数据, 则返回 None
|
||||||
|
if da_org is None:
|
||||||
|
return None
|
||||||
# (Add) 复制源数据进行后续操作, 以便最后复制源数据属性信息
|
# (Add) 复制源数据进行后续操作, 以便最后复制源数据属性信息
|
||||||
da = da_org.copy()
|
da = da_org.copy()
|
||||||
|
|
||||||
@ -215,13 +218,24 @@ def process_granule(
|
|||||||
if not os.path.isfile(output_file):
|
if not os.path.isfile(output_file):
|
||||||
# Open Asset
|
# Open Asset
|
||||||
da = open_hls(url, roi, clip, scale, chunk_size)
|
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
|
# Apply Quality Mask if Desired
|
||||||
if quality_filter:
|
if quality_filter:
|
||||||
da = da.where(~qa_mask)
|
da = da.where(~qa_mask)
|
||||||
|
|
||||||
# Write Output
|
# 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")
|
da.rio.to_raster(raster_path=output_file, driver="COG")
|
||||||
else:
|
else:
|
||||||
# (Add) 固定输出为 float32 类型, 否则会默认 float64 类型
|
# (Add) 固定输出为 float32 类型, 否则会默认 float64 类型
|
||||||
|
Loading…
x
Reference in New Issue
Block a user