API
本节介绍使用 Python API 进行完整 InSAR 时序处理流程的概述,引导您完成分析流程的每个阶段。
模块
InSAR 脚本设计了三个基于配置的主要模块,覆盖完整的 InSAR 处理流程:
点击各模块可查看详细信息。现在,让我们从基本示例开始运行程序。
工作流程
InSARHub 的基本工作流程可简要描述如下:
graph
A[设置研究区域] --> B[搜索];
B --> C[结果筛选];
C --> D[干涉图];
D --> F[时序分析];
F --> H[后处理];
click A "#set-aoi" "前往设置研究区域"
click B "#searching" "前往搜索部分"
click C "#result-filtering" "前往结果筛选部分"
click D "#interferogram"
click F "#time-series-analysis"
click H "#post-processing"
设置研究区域
InSARHub 支持使用边界框、Shapefile 或 WKT 定义研究区域(AOI):
边界框
注意
AOI 应在 CRS: EPSG:4326 (WGS84) 下指定为 [最小经度, 最小纬度, 最大经度, 最大纬度]
Shapefile
WKT
搜索
定义 AOI 后,可使用 Downloader 进行搜索。
from insarhub import Downloader
AOI = [-113.05, 37.74, -112.68, 38.00]
s1 = Downloader.create('S1_SLC', intersectsWith=AOI)
results = s1.search()
输出
Searching for SLCs....
-- A total of 991 results found.
The AOI crosses 18 stacks, you can use .summary() or .footprint() to check footprints and .filter(path_frame=(...)) to select the stack of scenes
you would like to download. If use .download() directly will create subfolders under /home/jldz9/dev/InSARHub for each stack
结果筛选
AOI 可能跨越多个场景。使用以下命令查看搜索结果的覆盖范围:
这将显示覆盖 AOI 的 Sentinel-1 场景覆盖图。由于存在多个堆叠,图像可能较为复杂:查看 SAR 场景堆叠的详细信息:
输出
=== ASCENDING ORBITS (14 Stacks) ===
relativeOrbit 20 frame 117 | Count: 10 | 2015-04-05 --> 2016-11-19
relativeOrbit 20 frame 118 | Count: 156 | 2016-12-13 --> 2026-02-24
...
=== DESCENDING ORBITS (4 Stacks) ===
relativeOrbit 100 frame 464 | Count: 119 | 2015-11-24 --> 2026-02-23
relativeOrbit 100 frame 466 | Count: 161 | 2017-02-22 --> 2022-07-02
...
程序识别出 18 个潜在堆叠。筛选至 2020 年降轨轨道 Path 100、Frame 466:
使用 download 下载搜索到的 SLC 数据:
使用 reset 恢复原始搜索结果:
干涉图
定位 SAR 场景堆叠后,下一步是生成解缠干涉图以准备时序分析。选择处理后端:
基于云端的处理,通过 ASF HyP3 进行,无需本地安装 ISCE2。
选择干涉图配对并提交至 HyP3:
from insarhub import Processor
from insarhub.utils import plot_pair_network
pair_stacks, B, scene_bperp = s1.select_pairs(max_degree=5)
fig = plot_pair_network(pair_stacks, B, scene_bperp)
fig.show()
若网络连通性良好,提交配对:
for (path, frame), pairs in pair_stacks.items():
processor = Processor.create('Hyp3_S1', pairs=pairs, workdir=f'your/directory/p{path}_f{frame}')
processor.submit()
processor.save()
在工作目录中生成 hyp3_jobs.json。每 100 个干涉图处理约需 30 分钟。
查看状态并下载结果:
使用 ISCE2 stackSentinel 进行本地处理。需先安装 ISCE2(见安装说明)并下载 SLC .SAFE 文件(使用 s1.download())。
from insarhub import Processor
from insarhub.config import ISCE_S1_Config
for (path, frame), pairs in pair_stacks.items():
cfg = ISCE_S1_Config(
workdir=f'your/directory/p{path}_f{frame}',
bbox=[37.74, 38.00, -113.05, -112.68], # [南, 北, 西, 东]
slc_dir=f'your/directory/p{path}_f{frame}/slc',
)
processor = Processor.create('ISCE_S1', pairs=pairs, config=cfg)
processor.submit() # 在后台启动处理
建议先进行试运行
在 ISCE_S1_Config 中添加 dry_run=True 可预览运行脚本和路径检查,而不执行任何操作。
监控步骤进度并等待完成:
输出
所有步骤显示 SUCCEEDED 后,干涉图位于 workdir/isce/merged/interferograms/。
时序分析
生成干涉图后,使用对应的分析器运行 MintPy SBAS 时序分析:
后处理
通常由 MintPy 等分析器自动处理后处理步骤。

