出色地
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 文件。