Add LandSAR cluster worker deployment
This commit is contained in:
@@ -0,0 +1,283 @@
|
||||
# LandSAR SBAS-InSAR 接入设计
|
||||
|
||||
记录时间:2026-06-04
|
||||
|
||||
## 1. 结论
|
||||
|
||||
LandSAR 支持 SBAS-InSAR。其 SBAS 是一体化流程,算法编号为 `280039`,参数文件入口是:
|
||||
|
||||
```text
|
||||
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_*` 目录,每个任务目录要求:
|
||||
|
||||
```text
|
||||
Task_xxx
|
||||
|-- Input_Data
|
||||
| |-- LT1*_SLC.xml
|
||||
| |-- LT1*_SLC.tif
|
||||
| `-- ...
|
||||
`-- Output_Data
|
||||
```
|
||||
|
||||
核心条件:
|
||||
|
||||
- `Input_Data` 下至少 3 景已导入的 LT-1 SLC。
|
||||
- 每景需要 `LT1*_SLC.xml` 与 `LT1*_SLC.tif/.tiff` 配对。
|
||||
- DEM 需要外部指定。
|
||||
- 精轨最好已经写入 XML 或已通过 LandSAR 精轨导入流程处理。
|
||||
|
||||
当前 LandSAR 项目文档说明,TimeSeriesBuilder 输出的 `Task_TS_*/Input_Data` 可直接被 PS/SBAS 页面扫描。
|
||||
|
||||
### 输出目录
|
||||
|
||||
LandSAR SBAS 输出在每个任务的 `Output_Data`:
|
||||
|
||||
```text
|
||||
Output_Data
|
||||
|-- *.los.tif
|
||||
|-- *.raster.tif
|
||||
|-- vector/
|
||||
|-- 280039.log
|
||||
`-- 280039_console.log
|
||||
```
|
||||
|
||||
成功判定可参考 LandSAR GUI:
|
||||
|
||||
- 日志包含 `SBAS` 和 `success`
|
||||
- 或日志包含 `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 标识:
|
||||
|
||||
```text
|
||||
processor_code = landsar_sbas
|
||||
profile_code = lt1_landsar_sbas
|
||||
engine_code = landsar
|
||||
proid = 280039
|
||||
```
|
||||
|
||||
## 4. 推荐接入路线
|
||||
|
||||
### 阶段 1:MVP,只接现成 Task/Input_Data
|
||||
|
||||
目标:先让系统能扫描、提交、监控和归档 LandSAR SBAS,不负责从原始 LT-1 自动构建时序 Input_Data。
|
||||
|
||||
新增配置:
|
||||
|
||||
```text
|
||||
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
|
||||
```
|
||||
|
||||
后端新增:
|
||||
|
||||
```text
|
||||
backend/app/services/landsar_sbas_service.py
|
||||
```
|
||||
|
||||
职责:
|
||||
|
||||
- 检查 LandSAR runtime、授权服务、`InSAR_Console.exe`、SBAS 相关 DLL。
|
||||
- 扫描 root 下的 `Task_*` 或单个 `Task_*`。
|
||||
- 校验 `Input_Data` 内 SLC XML/TIF 数量。
|
||||
- 生成 `280039.txt` 参数文件。
|
||||
- 调用:
|
||||
|
||||
```text
|
||||
D:\LandSAR\InSAR_Console.exe D:\LandSAR_Work\sbas\<run_id>\native\<task>\Output_Data\280039.txt
|
||||
```
|
||||
|
||||
- 把日志和核心 GeoTIFF 复制到系统标准结果目录。
|
||||
- 写入 `run_manifest.json`、`workflow_summary.json`、`product_summary.json`。
|
||||
|
||||
建议标准结果目录:
|
||||
|
||||
```text
|
||||
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/
|
||||
```
|
||||
|
||||
任务队列新增:
|
||||
|
||||
```text
|
||||
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 主资产角色:
|
||||
|
||||
```text
|
||||
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 保持一致:
|
||||
|
||||
```text
|
||||
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 不同:
|
||||
|
||||
- SBAS:`dem_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 和授权链路,风险最低。
|
||||
Reference in New Issue
Block a user