处理器
InSARHub 处理器模块专门提供干涉图处理功能。
-
导入处理器
导入 Processor 类以访问所有处理器功能
-
查看可用处理器
列出所有已注册的处理器
可用处理器
HyP3 InSAR 处理器是 ASF HyP3 系统提供的基于云端的处理服务,用于从 Sentinel-1 SAR 数据生成干涉图。 InSARHub 将 hyp3_sdk 封装为其处理后端之一。
Hyp3_S1 专门封装了 hyp3_sdk 中的 insar_job,提供 InSAR SLC 处理工作流。
Source code in src/insarhub/processor/hyp3_s1.py
使用方法
-
使用参数创建处理器
使用搜索条件初始化处理器实例
或或params = { "workdir": '/your/work/path', "pairs": pairs, } processor = Processor.create('Hyp3_S1', **params)from insarhub.config.defaultconfig import Hyp3_S1_Config cfg = Hyp3_S1_Config(workdir='/your/work/path', pairs=pairs) processor = Processor.create('Hyp3_S1', config=cfg)Attributes:
Name Type Description workdirPath | strDirectory where downloaded products will be stored. If provided as a string, it will be converted to a resolved
Pathobject during initialization.saved_job_pathPath | str | NoneOptional path to a saved job JSON file for reloading previously submitted jobs. If provided as a string, it will be converted to a resolved
Pathobject.earthdata_credentials_pooldict[str, str] | NoneDictionary mapping usernames to passwords for managing multiple Earthdata accounts. Used for parallel or quota-aware submissions.
skip_existingboolIf True, skip submission or download of products that already exist locally.
submission_chunk_sizeintNumber of jobs submitted per batch request to the API. Helps avoid request size limits and API throttling.
max_workersintMaximum number of worker threads used for concurrent submissions or downloads. Recommended to keep below 8 to avoid overwhelming the API or triggering rate limits.
Attributes:
Name Type Description pairslist[tuple[str, str]] | NoneList of Sentinel-1 scene ID pairs in the form [(reference_scene, secondary_scene), ...]. If None, pairs must be provided during submission.
name_prefixstr | NonePrefix added to generated HyP3 job names.
include_look_vectorsboolIf True, include look vector layers in the output product.
include_los_displacementboolIf True, include line-of-sight (LOS) displacement maps.
include_inc_mapboolIf True, include incidence angle maps.
looksstrMulti-looking factor in the format "range x azimuth" (e.g., "20x4").
include_demboolIf True, include the DEM used during processing.
include_wrapped_phaseboolIf True, include wrapped interferometric phase output.
apply_water_maskboolIf True, apply a water mask during processing.
include_displacement_mapsboolIf True, include unwrapped displacement maps.
phase_filter_parameterfloatPhase filtering strength parameter (typically between 0 and 1). Higher values apply stronger filtering.
Source code in
src/insarhub/config/defaultconfig.py255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
@dataclass class Hyp3_S1_Config(Hyp3_Base_Config): """ Configuration options for `hyp3_sdk` InSAR GAMMA processing jobs. This dataclass defines all parameters used when submitting InSAR jobs to the ASF HyP3 service using the GAMMA workflow. UI metadata is stored in ``_ui_groups`` / ``_ui_fields`` and consumed by the API layer to auto-generate the settings panel. Attributes: pairs (list[tuple[str, str]] | None): List of Sentinel-1 scene ID pairs in the form [(reference_scene, secondary_scene), ...]. If None, pairs must be provided during submission. name_prefix (str | None): Prefix added to generated HyP3 job names. include_look_vectors (bool): If True, include look vector layers in the output product. include_los_displacement (bool): If True, include line-of-sight (LOS) displacement maps. include_inc_map (bool): If True, include incidence angle maps. looks (str): Multi-looking factor in the format "range x azimuth" (e.g., "20x4"). include_dem (bool): If True, include the DEM used during processing. include_wrapped_phase (bool): If True, include wrapped interferometric phase output. apply_water_mask (bool): If True, apply a water mask during processing. include_displacement_maps (bool): If True, include unwrapped displacement maps. phase_filter_parameter (float): Phase filtering strength parameter (typically between 0 and 1). Higher values apply stronger filtering. """ # ── UI metadata consumed by the API / settings panel ───────────────────── _ui_groups: ClassVar[list] = [ {"label": "Processing", "fields": ["looks", "phase_filter_parameter", "name_prefix", "apply_water_mask"]}, {"label": "Outputs", "fields": ["include_dem", "include_look_vectors", "include_inc_map", "include_los_displacement", "include_wrapped_phase", "include_displacement_maps"]}, {"label": "Job", "fields": ["skip_existing", "submission_chunk_size"]}, ] _ui_fields: ClassVar[dict] = { "looks": {"type": "select", "options": ["20x4", "10x2"], "hint": "Range × azimuth looks (20x4 ≈ 80 m, 10x2 ≈ 40 m)"}, "phase_filter_parameter": {"type": "number", "min": 0, "max": 1, "step": 0.1, "default": 0.6, "hint": "Goldstein filter strength (0 = off, 1 = maximum)"}, "name_prefix": {"type": "text"}, "apply_water_mask": {"type": "bool"}, "include_dem": {"type": "bool"}, "include_look_vectors": {"type": "bool"}, "include_inc_map": {"type": "bool"}, "include_los_displacement": {"type": "bool"}, "include_wrapped_phase": {"type": "bool"}, "include_displacement_maps":{"type": "bool"}, "skip_existing": {"type": "bool", "hint": "Skip re-downloading already-completed jobs"}, "submission_chunk_size": {"type": "number", "min": 1, "max": 500, "step": 1, "default": 200, "hint": "Jobs per API batch request"}, } # ───────────────────────────────────────────────────────────────────────── name: str = "Hyp3_S1_Config" pairs: list[tuple[str, str]] | None = None name_prefix: str | None = 'ifg' include_look_vectors:bool=True include_los_displacement:bool=False include_inc_map:bool=True looks:str='20x4' include_dem :bool=True include_wrapped_phase :bool=False apply_water_mask :bool=True include_displacement_maps:bool=True phase_filter_parameter :float=0.6 -
提交任务
根据当前配置向 HyP3 提交 InSAR 任务。
-
刷新任务
刷新所有任务的状态。
-
重试失败任务
通过重新提交来重试所有失败的任务。
-
下载成功任务
下载所有用户的已成功任务。
-
保存当前任务
将当前任务批次信息保存到 JSON 文件。
-
监控任务
持续监控任务并下载已完成的输出。
-
加载已保存任务
加载之前保存的 JSON 文件并恢复工作。
加载后可恢复检查/下载提交至 HyP3 服务器的任务。
ISCE_S1 处理器在本地运行 ISCE2 stackSentinel,从下载的 SLC .SAFE 文件生成 Sentinel-1 干涉图。它生成一系列编号运行脚本并顺序执行,在每个步骤内并行运行独立命令。
-
导入处理器
-
创建处理器
from insarhub.config import ISCE_S1_Config cfg = ISCE_S1_Config( workdir='/data/p100_f466', bbox=[33.0, 38.0, -120.0, -115.0], # [南, 北, 西, 东] ) pairs = [('20200101', '20200113'), ('20200113', '20200125')] processor = Processor.create('ISCE_S1', pairs=pairs, config=cfg)Attributes:
Name Type Description workdirPath | strProcessing root. All outputs (run_files/, merged/, etc.) live here.
slc_dirPath | strDirectory containing all Sentinel-1 SLC .SAFE files (or .zips).
orbit_dirPath | str | NoneDirectory with .EOF orbit files. Created automatically if absent.
aux_dirPath | str | NoneDirectory with Sentinel-1 AUX_CAL files. Defaults to workdir/aux; ISCE2 downloads missing files there on first run.
dem_pathPath | str | NoneISCE2-binary DEM (dem.wgs84 + .xml sidecar). When None, GLO-30 is pre-downloaded using bbox.
isce_homePath | str | NoneISCE2 installation root. Falls back to $ISCE_HOME env var.
bboxlist[float] | NoneArea of interest as [S, N, W, E] degrees. Required when dem_path is None.
num_overlap_connectionsintConnections used for NESD azimuth coregistration.
reference_datestr | NoneStack reference date YYYYMMDD. None = stackSentinel auto-selects.
coregistrationstr'NESD' (default, more accurate) or 'geometry' (faster).
max_workersintParallel commands within each run step.
-
提交(本地模式)
生成运行脚本并在后台进程中开始顺序执行。立即返回;使用
refresh()监控进度。 -
提交(HPC / SLURM 模式)
在配置中设置
hpc_mode=True,将每个步骤作为单独的sbatch任务提交。 -
试运行
预览运行脚本和路径检查,不执行任何操作。
-
刷新
从磁盘读取步骤和命令状态。
-
重试失败步骤
重新运行所有状态为
FAILED的步骤。 -
取消
终止正在运行的后台进程(本地模式)或对所有活动 SLURM 任务执行
scancel(HPC 模式)。 -
监控
定期轮询步骤状态,直到所有步骤完成。
-
保存 / 加载
任务状态在
submit()后自动保存。从已保存的任务文件重新加载并恢复: