feat: support img/tif elevation dataset apply workflow

This commit is contained in:
chengkai3
2026-05-01 18:09:18 +08:00
parent 98fb191e34
commit 850a2e7bc3
6 changed files with 388 additions and 19 deletions
+34
View File
@@ -385,3 +385,37 @@
- 当前实现使用 CSV 点集“最近邻采样”,适合先跑通管理与回填流程;不是严格栅格插值方案。
- 未引入 GDAL/rasterio,部署更稳,但精度依赖 CSV 样本密度与坐标质量。
- 回填默认允许 `overwrite_all`,存在覆盖人工高程风险;前端默认展示“仅填空(推荐)”。
## Work Log - 高程管理支持 IMG/TIF 导入与回填(2026-05-01
- 背景:
- 用户上传的高程数据为 `.img`(栅格),现有实现仅支持 CSV 点集,无法直接用于高程回填任务。
- 本次改动(最小闭环):
- 后端服务能力扩展(文件格式识别 + 栅格采样):
- 文件:`api/app/services/elevation_service.py`
- 数据集创建时按扩展名自动识别并落库 `file_format`(支持 `.csv/.img/.tif/.tiff`)。
- 新增“按格式分流”执行:
- `csv`:沿用现有最近邻点集采样逻辑。
- `img/tif/tiff`:新增栅格像元采样逻辑,按杆塔经纬度写回 `power_line_tower.altitude_m`
- 新增栅格分析逻辑:
- 从栅格读取 `width/height/bounds` 回写 `sample_count/bbox`
- 对非 WGS84 CRS 增加告警,并在回填时自动执行坐标转换(WGS84 -> 栅格 CRS)。
- 回填溯源扩展:
- `raw_extra_json.elevation.sample_method` 对栅格标记为 `raster_pixel`
- 增加 `sample_distance_source` 字段(CSV 为 `computed`,栅格为 `pixel_lookup`)。
- 依赖补齐:
- 文件:`api/requirements.txt`,新增 `rasterio==1.4.3`
- 文件:`api/pyproject.toml`,新增 `rasterio>=1.4.0,<2.0.0`
- 前端文案更新:
- 文件:`web/src/app/admin/elevation/page.tsx`
- 页面提示更新为支持 `CSV/IMG/TIF/TIFF`,空态与示例路径同步为栅格可用口径。
- 验证:
- `python3 -m compileall api/app` -> 通过。
- `npm run build:web` -> 通过。
- 构建产物包含路由 `/admin/elevation`
- 风险与影响:
- `.img/.tif` 回填依赖 `rasterio`(及底层 GDAL 运行时),部署环境需确保镜像能成功安装该依赖。
- 栅格 bbox 直接来自源栅格 CRS;非经纬度坐标系场景会返回告警,便于识别与后续治理。