Files
insar-management-system-v2/docs/LANDSAR_SBAS_INSAR_INTEGRATION_DESIGN.md
T

8.3 KiB
Raw Blame History

LandSAR SBAS-InSAR 接入设计

记录时间:2026-06-04

1. 结论

LandSAR 支持 SBAS-InSAR。其 SBAS 是一体化流程,算法编号为 280039,参数文件入口是:

SBASProcess
ID 280039

这条链路和当前系统里的 Gamma SBAS 不同。Gamma SBAS 是分阶段工作流,包含栈发现、baseline audit、共参考配准、RDC DEM、干涉图、IPTA 反演和发布阶段;LandSAR SBAS 更接近 LandSAR D-InSAR 的模式:准备好 Task_*/Input_Data 后,通过 InSAR_Console.exe + 280039.txt 一次执行。

因此接入建议是:在 SBAS-InSAR 页面新增 LandSAR SBAS 处理器分支,而不是把 LandSAR 硬塞进现有 Gamma 分阶段按钮。

2. LandSAR SBAS 输入输出

输入目录

LandSAR SBAS 扫描 Task_* 目录,每个任务目录要求:

Task_xxx
|-- Input_Data
|   |-- LT1*_SLC.xml
|   |-- LT1*_SLC.tif
|   `-- ...
`-- Output_Data

核心条件:

  • Input_Data 下至少 3 景已导入的 LT-1 SLC。
  • 每景需要 LT1*_SLC.xmlLT1*_SLC.tif/.tiff 配对。
  • DEM 需要外部指定。
  • 精轨最好已经写入 XML 或已通过 LandSAR 精轨导入流程处理。

当前 LandSAR 项目文档说明,TimeSeriesBuilder 输出的 Task_TS_*/Input_Data 可直接被 PS/SBAS 页面扫描。

输出目录

LandSAR SBAS 输出在每个任务的 Output_Data

Output_Data
|-- *.los.tif
|-- *.raster.tif
|-- vector/
|-- 280039.log
`-- 280039_console.log

成功判定可参考 LandSAR GUI

  • 日志包含 SBASsuccess
  • 或日志包含 console success
  • 控制台返回码为 0
  • 同时存在核心输出,如 *.los.tif*.raster.tif

3. 与现有系统的差异

现有 Gamma SBAS

当前 /api/sbas-insar-production 是 Gamma / IPTA SBAS 主线:

  • 从资产池发现 LT-1 或 Sentinel-1 候选栈。
  • 创建 run_manifest.json
  • 分阶段执行 Gamma 脚本。
  • catalog 期望的核心产品是:
    • publish/geotiff/los_rate_toward_m_per_year.tif
    • publish/geotiff/los_sigma_m_per_year.tif
    • 相关预览图、质量图和监测点曲线。

LandSAR SBAS

LandSAR SBAS 的输入不是系统当前的资产栈 manifest,而是 LandSAR 风格的 Task_*/Input_Data

LandSAR SBAS 的输出语义也和 Gamma 不完全一致。*.los.tif 在文档里描述为 LOS 时序形变场,不应在没有验证前直接标成 Gamma 那种 los_rate_toward_m_per_year 速率产品。

因此 LandSAR SBAS 需要独立 processor 标识:

processor_code = landsar_sbas
profile_code   = lt1_landsar_sbas
engine_code    = landsar
proid          = 280039

4. 推荐接入路线

阶段 1MVP,只接现成 Task/Input_Data

目标:先让系统能扫描、提交、监控和归档 LandSAR SBAS,不负责从原始 LT-1 自动构建时序 Input_Data。

新增配置:

LANDSAR_SBAS_ENABLED=true
LANDSAR_SBAS_WORK_ROOT=D:\LandSAR_Work\sbas
LANDSAR_SBAS_DEM_PATH=D:\DEM\HeiLongJiang10M_DEM.tif
LANDSAR_SBAS_TIMEOUT_SECONDS=172800
LANDSAR_SBAS_MIN_SCENES=3
LANDSAR_SBAS_SOURCE_ROOTS=D:\Task_Pool\SBAS

后端新增:

backend/app/services/landsar_sbas_service.py

职责:

  • 检查 LandSAR runtime、授权服务、InSAR_Console.exe、SBAS 相关 DLL。
  • 扫描 root 下的 Task_* 或单个 Task_*
  • 校验 Input_Data 内 SLC XML/TIF 数量。
  • 生成 280039.txt 参数文件。
  • 调用:
D:\LandSAR\InSAR_Console.exe D:\LandSAR_Work\sbas\<run_id>\native\<task>\Output_Data\280039.txt
  • 把日志和核心 GeoTIFF 复制到系统标准结果目录。
  • 写入 run_manifest.jsonworkflow_summary.jsonproduct_summary.json

建议标准结果目录:

D:\production_results\timeseries\sbas\<run_id>
|-- run_manifest.json
|-- workflow_summary.json
|-- product_summary.json
|-- native_logs
|   |-- 280039.txt
|   |-- 280039.log
|   `-- 280039_console.log
`-- publish
    `-- landsar
        |-- los_timeseries.tif
        |-- post_raster.tif
        `-- vector/

任务队列新增:

JOB_TYPE_SBAS_LANDSAR_WORKFLOW = "SBAS_LANDSAR_WORKFLOW"

前端新增:

  • SBAS-InSAR 生产 页面增加处理器选择:
    • Gamma / IPTA SBAS
    • LandSAR SBAS
  • 选择 LandSAR SBAS 后显示:
    • Task 根目录
    • DEM 路径
    • 最少景数
    • 干涉对策略:single / prim
    • 垂直基线阈值
    • 时间基线阈值
    • 方位向/距离向多视
    • 输出 LOS 时序
    • 输出编码后栅格
  • 隐藏 Gamma 的 baseline/coreg/RDC DEM/IPTA 分阶段按钮。

阶段 2:接入 catalog 和结果页

当前 sbas_insar_catalog_service.py 主要按 Gamma 产品定义扫描。LandSAR 接入后有两种选择:

  1. 复用 sbas_insar catalog,但让资产定义按 processor_code 分支。
  2. 新建 landsar_sbas catalog。

建议选择 1。理由是前端结果页还是 SBAS-InSAR 结果,只是处理器不同。

需要调整:

  • _READY_STATUSES 增加 LandSAR 完成状态。
  • _CORE_ASSETS 改成按 processor 分支。
  • LandSAR 主资产角色:
primary_geotiff      -> publish/landsar/los_timeseries.tif
secondary_geotiff    -> publish/landsar/post_raster.tif
run_manifest         -> run_manifest.json
workflow_summary     -> workflow_summary.json
native_console_log   -> native_logs/280039_console.log

注意:不要把 LandSAR *.los.tif 直接命名为 los_rate_toward_m_per_year.tif,除非算法工程师确认该文件确实是年速率图。

阶段 3:从资产池自动构建 LandSAR 时序 Input_Data

阶段 1 只接现成 Task_*/Input_Data。如果需要从系统资产池直接生产 LandSAR SBAS,需要新增前处理:

  1. 从 LT-1 资产池选择同轨同极化多景。
  2. 调用 LandSAR LT-1 数据导入 100016,构建多景 Input_Data
  3. 调用 LandSAR 精轨导入 100206,或确认精轨已进入 XML。
  4. 输出 Task_TS_*/Input_Data
  5. 再调用 SBAS 280039

这一阶段风险比 MVP 高,建议在 LandSAR SBAS 一体化流程跑通后再做。

5. 参数建议

MVP 默认参数应与 LandSAR GUI 保持一致:

dem_data_type=1          # 文件。注意 SBAS 模板中 0 是目录,1 是文件
dem_format=4             # COPERNICUS,需结合实际 DEM 测试
intf_method=0            # single
perp_baseline=200
time_baseline=300
doppler_baseline=100
az_looks=3
rg_looks=3
da_threshold=0.25
intensity_threshold=0.0
calibration_threshold=0.4
fine_reg_window=128
resample_factor=2
network_type=0           # Delaunay
max_arc_distance=1000
solve_method=0           # Periodogram
max_temporal_coh=0.7
ref_point_index=0
spatial_filter_dist=1000
unwrap_ref_index=0
time_filter_threshold=0.3
do_los_output=1
gen_vector_map=0
gen_pre_raster=0
gen_post_raster=1

需要特别注意 DEM 参数。DInSAR 用 HeiLongJiang10M_DEM.tif 已跑通,但 SBAS 模板里的 DEM 类型字段和 DInSAR 不同:

  • SBASdem_data_type=0 表示目录,1 表示文件。
  • 当前 DEM 是 GeoTIFF 文件,所以应传 1

6. 风险点

  1. 输入结构风险

    现有 Gamma SBAS 的候选栈不是 LandSAR 的 Task_*/Input_Data。MVP 必须明确只支持 LandSAR 已导入后的时序任务目录。

  2. 输出语义风险

    LandSAR *.los.tif 是否为单幅速率图、累计形变图,还是多波段时序图,需要用一次真实输出确认。没有确认前不能按 Gamma 年速率产品入库。

  3. DLL 风险

    SBAS/PS 可能需要 DInSAR 之外的 DLL,例如:

    • SAR_InSAR_MTInSARModel.dll
    • SAR_InSAR_PSInSAR_CSU.dll
    • SAR_InSAR_MBCP_MTInSARModel.dll

    LandSAR SBAS availability check 应单独检查这些 DLL。

  4. 运行时间风险

    SBAS 是多景时序处理,默认 timeout 应明显大于 DInSAR,建议先设为 48 小时。

  5. catalog 风险

    当前 SBAS catalog 以 Gamma 结果为主。LandSAR 接入时要做 processor-specific asset mapping,否则会出现“运行成功但结果页查不到”。

7. 建议下一步

先实现阶段 1

  1. 新增 landsar_sbas_service.py,只支持扫描现成 Task_*/Input_Data
  2. 新增 SBAS_LANDSAR_WORKFLOW 后台任务。
  3. 前端 SBAS 页面增加 LandSAR SBAS 分支。
  4. 先不改资产池自动构建,不接 Sentinel-1,不开放 GACOS。
  5. 用一个 3 景以上的 Task_TS_* 做首轮真实测试。
  6. 根据真实输出再接 catalog 和结果页。

这个路线保留 Gamma SBAS 现状,同时利用已经验证的 LandSAR runtime 和授权链路,风险最低。