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

75 lines
3.4 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.
# PyINT + Gamma A/B 排查结论
更新时间:2026-04-20
## 1. 排查目标
验证当前仓库内改过的 `PyINT/Gamma` 流程,是否只是“流程层修改”而没有影响科学结果;尤其要定位为什么同一组 LT-1 `Task` 在 ENVI/IDL 核心可产出结果,而当前 PyINT 结果为空。
本轮对照任务:
- 任务目录:`D:\Task_Pool\DInSAR\Task_260416_Gamma_PyINT\Task_20230602_20230720`
- DEM`D:\DEM\COPDEM_GLO30_China_4326_DEM`
- 实验根目录:`D:\PyINT_AB`
- 生产链 Python`/home/administrator/miniconda3/envs/isce2/bin/python`
## 2. 对照实验
### Case A:当前代码 + 轨道桥接开启 + rescue 开启
- case`D:\PyINT_AB\current_orbit_rescue`
- 结果:流程可跑完到 `diff`
- 但关键中间结果全 0
- `diff_filt.zero_ratio = 1.0`
- `cor.zero_ratio = 1.0`
### Case B:当前代码 + 轨道桥接关闭 + rescue 开启
- case`D:\PyINT_AB\no_orbit_rescue`
- 结果:流程同样可跑完到 `diff`
- 关键中间结果仍然全 0
- `diff_filt.zero_ratio = 1.0`
- `cor.zero_ratio = 1.0`
结论:轨道桥接开关不是这次“全 0 结果”的主责任点。
### Case C:轨道桥接开启 + 去掉 rescue
- case`D:\PyINT_AB\orbit_no_rescue`
- 结果:流程直接死在 `coreg`
- 关键报错:
- `init_offsetm failed`
- `ERROR: number of zero values 195367 in MLI1 image patch exceeds threshold: 32768`
结论:当前仓库里的 `coreg rescue` 确实在掩盖真实失败。它让一个本应失败的配准任务继续往后执行,最终产生“流程成功但科学结果全 0”的假成功。
## 3. 直接结论
1. 不能再说“我们现在的改动只改流程、不影响结果”。当前实现已经改变了失败语义,导致无效结果被当成成功结果收口。
2. 这次任务的主要问题点在 `coreg`,不是 GeoTIFF 导出,不是地理编码,也不是解缠。
3. LT-1 精密轨道桥接不是这次空结果的主责任点;更深层的根因仍然要继续排查 LT-1 导入 / 配准链路与 ENVI/IDL 核心之间的差异。
## 4. 已落实的代码策略
为避免系统继续产出“成功但全 0”的无效结果,当前仓库已做两项收敛:
1. `third_party/PyINT/pyint/coreg_gamma.py`
- 去掉两个 rescue/fallback
- `init_offsetm/offset_pwrm/offset_fitm/gc_map_fine` 失败时不再复制 `lt0 -> lt1`
- offset refinement 失败时不再把 `Srslc0` 直接提升为最终 `RSLC`
- 改为失败即退出
2. `backend/app/pyint_pipeline/run_lt1_pyint_pipeline.py`
- 增加产物有效性检查
- 如果 `diff_filt` / `coh` / `unw` / `geo_unw` / `geo_los` 出现“文件存在但二进制全 0”,直接判定此次运行失败
- 运行失败时附带阶段错误日志路径,例如 `coreg_gamma_all.err`
## 5. 后续真正要解决的问题
这次代码收敛只解决“假成功”问题,还没有解决“为什么 LT-1 在 PyINT/Gamma 下配不准”这个根因。下一阶段建议继续做以下对照:
1. 对比 ENVI/IDL 成功任务与 PyINT 导入后的 `.slc.par`、多视幅度、DEM 配准输入是否一致。
2. 对比 LT-1 导入脚本生成的 `SLC/MLI` 几何参数,尤其是时序、PRF、采样间隔、deskew、状态矢量相关字段。
3. 对比 `mli0` 与目标 `Samp` 的重叠区域,确认 `init_offsetm` 为什么会在中心 patch 上出现大量 0 值。
当前判断:真正的科学问题仍在 LT-1 导入 / coreg 前置几何链路,而不是后面的 unwrap / geocode。