Refactor flood disaster analysis workspace

This commit is contained in:
2026-05-14 16:30:14 +08:00
parent 729c5c2a7f
commit 9000feeee8
12 changed files with 1700 additions and 19 deletions
@@ -0,0 +1,304 @@
# 水体提取与洪涝灾害分析设计
更新日期:2026-05-14
## 1. 设计结论
这个模块不应该被设计成一堆遥感处理工具的集合。它的业务目标很简单:
```text
提取水体 -> 检测洪涝 -> 套合已有矢量数据 -> 输出结果
```
因此前端和后端都应围绕这条流水线组织,而不是暴露过多工程阶段。用户关心的是:
- 哪些数据可以拿来提水体。
- 哪两期数据可以用来判断洪涝。
- 洪涝范围在哪里、面积多大。
- 影响了哪些灾害点、行政区、AOI 或其他矢量对象。
- 结果能不能上图、导出、形成报告。
## 2. 当前真实边界
现有代码不能理解为已经具备多源 ENVI 洪涝系统。
当前事实:
- LT-1 有 `SARsImportLuTan1` 相关 ENVI/SARscape 链路,可作为第一条精密检测主线。
- GF3 有纯 Python/GDAL 的 L1A 到 L2 处理,不是 ENVI/SARscape 洪涝导入。
- Sentinel-1 有源产品、ZIP/SAFE、EOF、PyINT/Gamma 相关管理设计,不是 ENVI/SARscape 洪涝导入。
- 当前 `water` 模块已经有旧的单景 geocode、Otsu 快速检测、精密洪涝检测和地图预览能力,可作为迁移基础。
所以第一阶段不能承诺 GF3/Sentinel-1 可直接做 ENVI 精密洪涝检测。页面上必须显示为“待接入导入适配器”。
## 3. 产品信息架构
左侧一级入口合并为:
```text
洪涝灾害分析
├─ 洪涝灾害分析
└─ 水体监测(旧入口)
```
新的“洪涝灾害分析”工作台只保留四个视图:
```text
1. 水体提取
2. 洪涝检测
3. 套合分析
4. 结果与任务
```
旧“水体监测”入口短期保留,承载当前 `WaterMonitorPanel` 的功能。后续功能成熟后再逐步迁入新工作台。
## 4. 地图设计
不新建第二套地图。
当前中间地图大屏已经有底图、行政区定位、导出、雷达覆盖、洪涝影像叠加能力。新工作台应复用 `AppMapWorkspace``App.jsx` 中的 Leaflet 实例,通过回调控制图层:
```text
FloodAnalysisWorkspace
-> onShowSourceSceneOnMap
-> onShowFloodOnMap
-> onToggleFloodLayer
```
地图只负责展示,业务按钮放在左侧工作台。
## 5. 流水线设计
### 5.1 水体提取
目标:把单期雷达影像处理成水体范围。
用户动作:
- 选择数据。
- 查看数据是否可处理。
- 提交水体提取。
- 查看水体范围。
- 加载到地图。
数据状态建议:
- `已入库`:系统只管理了原始/解压数据。
- `可提取`:已有可用处理器。
- `处理中`:任务正在运行。
- `已提取`:已有水体范围产品。
- `待接入`:数据存在,但缺少对应导入/处理适配器。
传感器边界:
- LT-1:优先接旧 ENVI/SARscape 链路。
- GF3:待补 ENVI/SARscape 洪涝导入;现有 Python/GDAL 成果可作为后续快速路线输入。
- Sentinel-1:待补 ENVI/SARscape 洪涝导入,或后续明确非 ENVI 检测路线。
### 5.2 洪涝检测
目标:比较灾前/灾后水体变化,识别新增水体作为洪涝范围。
用户动作:
- 选择灾前数据。
- 选择灾后数据。
- 自动推荐配对。
- 提交洪涝检测。
- 查看洪涝面积和稳定水体面积。
- 加载灾前、灾后、分类图到地图。
检测路线:
- 精密路线:ENVI/SARscape `SARsBasicFeFloodingClassification`
- 快速路线:Otsu/GeoTIFF 水体掩膜差异,作为轻量能力。
输出类别:
```text
1 = 稳定水体
2 = 洪涝/新增水体
3 = 高散射
4 = 非水体
```
### 5.3 套合分析
目标:把洪涝范围与已有矢量数据叠加,回答“影响了什么”。
第一阶段套合对象:
- 灾害点。
- 行政区。
- 当前 AOI。
- 自定义矢量。
输出:
- 洪涝范围矢量。
- 受影响灾害点清单。
- 行政区/AOI 洪涝面积统计。
- 距离洪涝范围一定阈值内的风险点。
- GeoJSON 和表格导出。
灾害点关系建议:
- `inside_flood`:点落在洪涝范围内。
- `near_flood`:点距离洪涝边界小于阈值。
- `inside_scene_only`:点在影像覆盖范围内,但未受洪涝影响。
面积统计必须使用合适投影,不能直接用经纬度面积作为正式统计。
### 5.4 结果与任务
目标:统一查看任务、图层、结果和导出。
展示字段:
- 结果 ID。
- 灾前日期。
- 灾后日期。
- 卫星组合。
- 处理器。
- 洪涝面积。
- 稳定水体面积。
- 影响灾害点数量。
- 状态。
- 更新时间。
操作:
- 加载图层。
- 打开产品包。
- 导出 GeoTIFF/GeoJSON。
- 生成报告。
## 6. 后端域模型
后端可以继续兼容 `/water/*`,但新能力建议逐步进入 `/flood/*`
最小模型不要过度复杂,先围绕四类对象:
```text
WaterExtractionRun
FloodDetectionRun
FloodOverlayRun
FloodResultProduct
```
如果后续需要多源产品治理,再扩展:
```text
FloodReadyProduct
FloodPair
FloodVectorAsset
FloodReport
```
## 7. API 草案
### 水体提取
```text
GET /flood/sources
POST /flood/water-extractions
GET /flood/water-extractions
GET /flood/water-extractions/{id}
GET /flood/water-extractions/{id}/preview
```
### 洪涝检测
```text
POST /flood/pairs/search
POST /flood/detections
GET /flood/detections
GET /flood/detections/{id}
GET /flood/detections/{id}/preview/{layer}
```
### 套合分析
```text
POST /flood/detections/{id}/vectorize
POST /flood/detections/{id}/overlay
GET /flood/detections/{id}/impact
```
### 结果导出
```text
GET /flood/results
GET /flood/results/{id}
POST /flood/reports
```
## 8. 前端按钮流
### 水体提取
- 查询数据。
- 显示覆盖。
- 提交水体提取。
- 批量提取。
- 查看水体结果。
### 洪涝检测
- 自动推荐配对。
- 选择灾前/灾后。
- 提交检测。
- MRF 精化开关。
- 加载图层。
- 去套合分析。
### 套合分析
- 运行套合分析。
- 加载影响点。
- 导出影响清单。
- 导出 GeoJSON。
### 结果与任务
- 刷新结果。
- 加载全部图层。
- 打开产品包。
- 生成报告。
- 导出成果。
## 9. 分阶段实施
### Phase 1:前端流水线壳层
- 合并“水体监测”和“洪涝灾害分析”为一个业务组。
- 新工作台只保留水体提取、洪涝检测、套合分析、结果与任务。
- 复用旧 `/water/*` 数据展示当前已有能力。
- 明确 GF3/Sentinel-1 为待接入,不显示为可精密检测。
### Phase 2LT-1 主线打通
- 把当前 `water_service.py` 中 LT-1 ENVI 链路整理成清晰的水体/洪涝任务。
- 输出标准结果。
- 完成地图预览和结果列表。
### Phase 3:套合分析
- 分类栅格转洪涝矢量。
- 接入灾害点套合。
- 接入行政区/AOI 统计。
- 输出影响清单。
### Phase 4:多源扩展
- GF3 ENVI/SARscape 导入适配器或替代检测路线。
- Sentinel-1 ENVI/SARscape 导入适配器或替代检测路线。
- 多源配对策略和质量提示。
## 10. 设计原则
- 页面按业务问题组织,不按算法步骤堆控件。
- 数据已入库不代表可检测,必须明确可用性状态。
- 地图只保留一套,避免图层和状态重复。
-`water` 模块保留迁移期入口,但新功能进入 `FloodAnalysisWorkspace`
- 套合分析是核心能力,不是结果页上的附属按钮。
+4 -3
View File
@@ -23,7 +23,7 @@ The current first-level menu groups are:
- `production_management`: 生产管理
- `insar_analysis`: InSAR形变分析
- `ai_analysis`: AI分析
- `water`: 水体监测
- `flood_analysis`: 洪涝灾害分析
- `ops`: 运行维护
Definition files:
@@ -125,8 +125,8 @@ The following groups do not define second-level sections:
- `data`
leaf tabs: `ingest`, `data`, `hazard`
- `water`
leaf tabs: `water`
- `flood_analysis`
leaf tabs: `flood_analysis`
- `ops`
leaf tabs: `health`, `users`, `audit`
@@ -197,6 +197,7 @@ These aliases exist for compatibility, but they are not first-class left-nav ent
Recommended future additions:
- Use `flood_analysis` as the combined first-level group for water extraction, flood detection, overlay analysis, and flood results. The legacy `water` route may remain in code for compatibility, but it is no longer a first-class left-nav entry.
- Put new production execution or product-governance capability under `production_management` as an internal workspace view unless a separate first-level domain is clearly required.
- Put planning, batching, pairing, and dispatch preparation capability under `production_planning`.
- Put result browsing and analyst-facing deformation interpretation under `insar_analysis`.
+3
View File
@@ -36,6 +36,9 @@
- [PRODUCTION_RESULTS_MULTI_ENGINE_DESIGN_20260423.md](PRODUCTION_RESULTS_MULTI_ENGINE_DESIGN_20260423.md)
多引擎结果目录、发布结构和 catalog 治理设计。
- [FLOOD_DISASTER_ANALYSIS_SYSTEM_DESIGN_20260514.md](FLOOD_DISASTER_ANALYSIS_SYSTEM_DESIGN_20260514.md)
洪涝灾害分析独立系统设计,定义多源 SAR 数据、ENVI/SARscape 洪涝流程、标准产品包和矢量套合分析边界。
- [WSL_RUNTIME_REFACTOR_DESIGN_20260422.md](WSL_RUNTIME_REFACTOR_DESIGN_20260422.md)
WSL 共享运行时和 Broker 设计。