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

348 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Sentinel-1 系统增强总纲
日期:2026-05-10
本文作为 Sentinel-1 增强工作的主维护文档。后续如果继续推进 Sentinel-1 数据管理、D-InSAR 配对、Gamma/PyINT 生产和结果归档,优先维护本文;更细的调研材料保留为参考:
- [SENTINEL1_DATA_MANAGEMENT_ADAPTATION_PLAN_20260510.md](SENTINEL1_DATA_MANAGEMENT_ADAPTATION_PLAN_20260510.md)
- [SENTINEL1_DINSAR_GAMMA_ISCE2_FEASIBILITY_20260510.md](SENTINEL1_DINSAR_GAMMA_ISCE2_FEASIBILITY_20260510.md)
## 1. 总体目标
让当前系统能够管理 Sentinel-1 数据,并把 Sentinel-1 D-InSAR 生产纳入现有生产管理和结果管理体系。
推荐边界是:
- 系统负责数据管理、元数据解析、精轨匹配、配对、任务分发、生产调度、日志、结果归档和前端展示。
- Gamma + PyINT 负责 Sentinel-1 D-InSAR 的处理内核,包括 SLC 导入、burst 裁剪、TOPS 配准、差分干涉、解缠和地理编码。
- ISCE2 Sentinel-1 TOPS 作为后续可选 profile,不作为第一阶段主线。
第一阶段不要求系统自己实现 SAR 核心算法,也不要求配对阶段计算真实垂直基线。
## 2. 总体架构
建议新增一条独立 Sentinel-1 Gamma 生产链:
```text
Sentinel-1 数据池
-> 数据扫描与元数据入库
-> EOF 精轨管理与匹配
-> D-InSAR 轻量配对
-> 任务批次保存
-> Task 目录分发
-> s1_gamma_dinsar profile
-> PyINT + Gamma 处理
-> 结果扫描与 catalog 发布
-> 生产管理 / 结果管理前端展示
```
关键原则:
- Sentinel-1 不混进 LT-1 专用的 `lt1_gamma_dinsar``lt1_stripmap`
- 新增 `s1_gamma_dinsar` profile 作为第一阶段生产入口。
- 真实 `perpendicular_baseline_meters` 由 Gamma/PyINT 在生成 SLC/RSLC 后计算或回填。
- footprint 质心距离只能叫 `centroid_distance_meters`,不能再叫空间基线。
## 3. 数据管理
### 3.1 支持的数据形态
第一阶段建议以 Sentinel-1 SLC ZIP 为生产标准输入。
系统可以管理两类形态:
- `.SAFE` 目录:适合浏览、入库、解析元数据。
- `.zip` 原始产品:适合 PyINT/Gamma 生产分发。
如果数据池只有 `.SAFE` 目录,也可以入库和配对;但进入 PyINT/Gamma 生产时,建议要求关联原始 ZIP。原因是 `D:\Code\PyINT` 的 Sentinel-1 脚本默认从 `DOWNLOAD/S1*.zip` 发现和导入数据。
### 3.2 元数据解析
文件名可以提供粗信息:
- `S1A` / `S1B`
- `IW` / `EW` / `SM`
- `SLC`
- 极化组合,例如 `DV``DH``SV``SH`
- 起止时间
- absolute orbit
- datatake id / product id
可靠配对还需要从 `manifest.safe` 或 annotation XML 中解析:
- relative orbit
- 升降轨方向
- footprint
- swath / burst 相关信息
- 更完整的极化和产品结构
建议采用“关键列 + JSON 扩展”的模型。关键列服务检索、筛选和配对;JSON 保存 Sentinel-1 专有细节,避免一开始改出大量窄字段。
### 3.3 精轨管理
Sentinel-1 EOF 不走 LT-1 的精轨转换链路。
建议新增 Sentinel-1 EOF 管理逻辑:
- 扫描 `.EOF` 文件。
- 解析 mission、validity start、validity stop、generation time。
- 按影像 acquisition time 匹配覆盖该时段的 EOF。
- 允许把匹配到的 EOF 复制到 Task 目录。
- PyINT runner 将 EOF 目录作为 `OPOD_DIR` 暴露给 PyINT/GAMMA。
这样可以避免生产时临时联网下载精轨,也便于任务复现。
## 4. D-InSAR 配对
Sentinel-1 配对适合嵌入现有 D-InSAR 配对体系,但应使用独立策略:
```text
sentinel1_dinsar_pairing
```
第一阶段配对只做轻量预筛选:
- 同一卫星族:`S1A` / `S1B` 可以互配,不按字面同卫星硬卡死。
- 同一成像模式:优先只支持 `IW`
- 同一产品类型:优先只支持 `SLC`
- 同一升降轨方向。
- 同一 relative orbit。
- 极化兼容,例如 `VV``VV`
- footprint 重叠率达到阈值。
- 时间基线不超过阈值。
- master/slave 都能匹配 EOF。
不在配对阶段强制完成:
- 真实垂直基线计算。
- burst 级精确公共覆盖计算。
- TOPS 配准质量判断。
- 解缠可行性判断。
这些应交给 Gamma/PyINT 的处理链路完成。配对阶段只负责筛出大概率可跑的候选对。
## 5. 任务分发
Sentinel-1 D-InSAR 任务分发需要输出一个可复现的 Task 目录。
建议包含:
```text
Task/
manifest.json
pair.json
input/
master/
<S1 master zip or SAFE>
slave/
<S1 slave zip or SAFE>
orbit/
<matched EOF files>
dem/
<optional dem reference or config>
pyint/
<project>.template
```
分发开关建议:
- 是否复制 EOF 到 Task 目录。
- 是否输出 ZIP 压缩包。
- 是否保留中间 SLC/RSLC 产物。
- 是否只发布核心结果。
如果生产目标是 PyINT/GammaTask 到 PyINT scratch 目录之间可以由 runner 再做一次结构化投放,把 master/slave ZIP 放入:
```text
$SCRATCHDIR/<project>/DOWNLOAD/
```
## 6. Gamma/PyINT 生产
第一阶段新增 profile
```text
s1_gamma_dinsar
```
它应独立于当前 `lt1_gamma_dinsar`
推荐 runner 行为:
1. 读取 Task manifest 和 pair 信息。
2. 创建 PyINT project 目录。
3. 复制或链接 master/slave Sentinel-1 ZIP 到 `DOWNLOAD/`
4. 准备 EOF / OPOD 目录。
5. 写入 PyINT template。
6. 调用 Sentinel-1 PyINT 脚本链。
7. 收集每一步日志和退出码。
8. 扫描输出产物并发布到系统结果 catalog。
可复用的 `D:\Code\PyINT` Sentinel-1 脚本包括:
- `pyint/down2slc_sen.py`
- `pyint/down2slc_sen_all.py`
- `pyint/extract_s1_bursts.py`
- `pyint/coreg_s1_gamma.py`
- `pyint/raw2ifg_s1.py`
- `pyint/select_pairs.py`
生产系统不建议直接无控制地调用完整 app,而应显式控制步骤、日志、失败原因和产物发布。
## 7. 结果管理
PyINT/Gamma 生产结束后,系统负责结果归档。
第一阶段建议发布:
- pair manifest
- PyINT template
- 全量日志
- preflight 报告
- SLC/RSLC 生成状态
- 共同 burst 检查结果
- interferogram
- coherence
- unwrapped phase
- geocoded result
- quicklook
- 真实 `perpendicular_baseline_meters`
结果管理应复用现有生产结果 catalog,不新建一套孤立页面。前端仍然从生产管理和结果管理入口查看,只是引擎 profile 显示为 `s1_gamma_dinsar`
## 8. 前端入口
前端需要在现有页面中增强,而不是新增一个割裂的 Sentinel-1 子系统。
建议改动范围:
- 数据管理页面支持 Sentinel-1 过滤、详情和 EOF 匹配状态。
- 配对页面新增 Sentinel-1 策略和参数。
- 配对结果中显示 relative orbit、升降轨、极化、时间基线、重叠率和 EOF 状态。
- 生产管理中支持 `s1_gamma_dinsar` profile。
- 任务分发 UI 中增加 EOF 复制和 ZIP 导出开关。
- 结果详情中显示 PyINT/Gamma 日志、核心产物和真实垂直基线。
第一阶段不需要让用户配置所有 PyINT template 字段。可以只暴露少量参数,其余使用系统默认值。
## 9. 数据库和自检
本系统有数据库自维护和系统自检机制,Sentinel-1 增强必须纳入这两部分。
需要评估的数据库变更:
- Sentinel-1 关键元数据字段是否已有通用列可复用。
- relative orbit、acquisition start/stop、source archive path、orbit match status 是否需要新增列。
- Sentinel-1 专有元数据是否放入 JSON 扩展字段。
- pairing cache 是否需要保存 `centroid_distance_meters``perpendicular_baseline_meters` 的区分。
- 生产结果 catalog 是否需要新增 engine profile 或产品类型枚举。
自检需要增加:
- Sentinel-1 数据根目录是否存在。
- EOF 根目录是否存在。
- Sentinel-1 解析器是否可用。
- `s1_gamma_dinsar` profile 是否启用。
- PyINT 路径是否存在。
- GAMMA 环境是否可用。
- `eof` 工具是否可用。
- 关键 GAMMA/PyINT 命令是否可调用。
- DEM 配置是否完整。
任何 schema 改动都必须同步数据库自维护逻辑,避免启动时 schema check 报错。
## 10. 分阶段实施
### 阶段 1:数据管理和配对
目标:
- Sentinel-1 SAFE / ZIP 可扫描入库。
- 基础元数据和 footprint 可解析。
- EOF 可扫描、匹配和显示。
- Sentinel-1 配对可生成候选对。
- 配对不进入生产也能保存批次。
验收:
- 同一 relative orbit 的 S1 数据能被正确筛出。
- 不同方向、不同 relative orbit、不同模式的数据不会误配。
- footprint 重叠率和时间基线显示正确。
- EOF 状态清晰可见。
### 阶段 2:任务分发
目标:
- Sentinel-1 pair 可分发为 Task 目录。
- 可选复制 EOF。
- 可选导出 ZIP。
- manifest 可复现输入数据和参数。
验收:
- Task 目录包含 master/slave、EOF、pair manifest、profile 参数。
- ZIP 导出可直接交给生产或转移归档。
### 阶段 3Gamma/PyINT 生产
目标:
- 新增 `s1_gamma_dinsar` profile。
- 托管调用 PyINT/Gamma 完成单对 Sentinel-1 D-InSAR。
- 生产日志进入系统。
验收:
- 至少一对 Sentinel-1 SLC ZIP 能跑通到 geocoded 结果。
- 失败时能看到明确步骤和原因。
- 真实垂直基线可以回填或记录。
### 阶段 4:结果管理
目标:
- PyINT/Gamma 产物进入现有结果 catalog。
- 前端可以查看日志、manifest、quicklook 和核心产物。
验收:
- 用户不需要进入 PyINT 工作目录即可查看结果。
- 结果与 pair、task、engine profile 可追踪。
### 阶段 5ISCE2 Sentinel-1 可选增强
目标:
- 新增 `s1_tops` profile。
- 使用 ISCE2 `topsApp.py` 或 topsStack。
- 与 Gamma 路线共享数据管理和 EOF 管理。
验收:
- 不污染现有 LT-1 `lt1_stripmap` runner。
- Sentinel-1 TOPS 生产有独立健康检查、日志和结果发布。
## 11. 主要风险
- 数据池只保留 `.SAFE`,没有原始 ZIP,会增加 PyINT/Gamma 接入复杂度。
- EOF 匹配不稳定会导致生产不可复现。
- Sentinel-1 annotation XML 解析不完整会影响 relative orbit、方向和 footprint。
- 中间产物体积大,SLC/RSLC 保留策略要可配置。
- PyINT 专家代码可用,但生产系统仍要做日志、失败分类和输出扫描。
- ISCE2 Sentinel-1 虽然可行,但当前系统没有 tops profile,不能当作低成本改动。
## 12. 当前推荐决策
建议确认以下产品决策后再进入代码实现:
1. Sentinel-1 生产第一阶段要求保留原始 SLC ZIP。
2. 配对策略命名为 `sentinel1_dinsar_pairing`
3. 生产 profile 命名为 `s1_gamma_dinsar`
4. 第一阶段只支持 `IW + SLC + 同 relative orbit + 同方向 + 兼容极化`
5. `centroid_distance_meters``perpendicular_baseline_meters` 严格区分。
6. 真实垂直基线由 Gamma/PyINT 处理后回填。
7. ISCE2 Sentinel-1 TOPS 放到第二阶段。
这套边界可以把系统改造控制在数据管理、配对、分发、生产托管和结果管理范围内,把 SAR 处理精度交给 Gamma/PyINT,避免在配对阶段过度复杂化。