出色地
2024.10.5
在任何具有集成云检测、雪掩蔽、协调、合并和时间复合功能的计算机上下载大规模(大于内存)的 Sentinel-1 和 Sentinel-2 数据立方体。
该包已使用 Python 3.12.* 进行测试。它可能适用于其他版本,也可能不适用于其他版本。
pip install sentle
或者
git clone [email protected]:cmosig/sentle.git
cd sentle
pip install -e .
过程
只有一个重要的功能: process
。您可以在此处指定下载和处理所需的所有参数。调用此函数后,它会立即开始下载并处理您指定的数据到 zarr 文件中。
from sentle import sentle
from rasterio.crs import CRS
sentle.process(
zarr_store="mycube.zarr",
target_crs=CRS.from_string("EPSG:32633"),
bound_left=176000,
bound_bottom=5660000,
bound_right=216000,
bound_top=5700000,
datetime="2022-06-17/2023-06-17",
target_resolution=10,
S2_mask_snow=True,
S2_cloud_classification=True,
S2_cloud_classification_device="cuda",
S1_assets=["vv", "vh"],
S2_apply_snow_mask=True,
S2_apply_cloud_mask=True,
time_composite_freq="7d",
num_workers=10,
)
此代码下载 Sentinel-1 和 Sentinel-2 一年内 40 公里 x 40 公里区域的数据。检测到云和雪并用 NaN 替换。数据也每 7 天取平均值。
一切都在 10 个工作线程中并行化,每个工作线程立即将其结果保存到zarr_store
的指定路径中。这确保您可以下载大于内存的多维数据集。
解释:
zarr_store
:保存路径。target_crs
:指定所有数据将重新投影到的目标 CRS。target_resolution
:确定target_crs
中所有数据重新投影到的空间分辨率。bound_*
:您要下载的区域的target_crs
中的空间边界。如果相反边界之间的差异不能被target_resolution
整除,则行为未定义。datetime
:将下载的时间范围。S2_mask_snow
:是否计算 Sentinel-2 数据的雪掩模。S2_cloud_classification
:是否对 Sentinel-2 数据执行云分类层。S2_cloud_classification_device
:运行云分类的位置。如果您有 Nvidia GPU,则传递cuda
,否则传递cpu
(默认)。S2_apply_*
:是否应用相应的掩码,即将值替换为NaN。S1_assets
:要下载哪些 Sentinel-1 资产。通过将其设置为None
来禁用 Sentinel-1 。time_composite_freq
:对数据进行平均的舍入间隔。使用pandas.Timestamp.round(time_composite_freq)
。云/雪蒙版在蒙版后会被丢弃,因为它们无法聚合。num_workers
:要使用的核心数。为每个工作线程规划大约 2 GiB 的内存使用量。 -1 表示所有核心。processing_spatial_chunk_size
:并行处理的空间块的大小。默认值为 4000。overwrite
:如果 zarr 存储已经存在,是否覆盖它。默认值为 False。可视化
使用 xarray 加载数据。
import xarray as xr
da = xr.open_zarr("mycube.zarr").sentle
da
并使用很棒的 lexcube 包进行可视化。这里,频带 B02 从上面的示例中可视化。人们能够在冬季发现云隙和参差不齐的覆盖情况。
import lexcube
lexcube.Cube3DWidget(da.sel(band="B02"), vmin=0, vmax=4000)
设置Sentle
类时,使用num_workers
参数增加工作人员数量。默认空间块大小为 4000(由processing_spatial_chunk_size
指定),您应该为每个工作线程规划 2GiB。
如果您觉得缺少某些内容或需要修复,请提交问题或拉取请求。
该项目已根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE.md 文件。