|
|
b609a64811
|
fix: 多项稳定性修复与打包优化
- PyInstaller: runtime hook 预加载 osgeo DLL 避免 Qt5 符号冲突;
spec 纳入 osgeo .py 文件 + 运行时 DLL 依赖 (ffi/lzma/bz2/expat/sqlite3);
移除 DLL 双副本防止 segfault
- GDAL 环境: 新增 _MEIPASS/osgeo/data/gdal 路径搜索,改善打包后 GDAL_DATA 检测
- 预览生成器: 掩膜与底图同分辨率时跳过 Warp 加速读取
- 专题图: ConvexHull 坐标中心化修复 UTM 大坐标精度退化;
边界采样兜底防止外扩点为空;
TIFF 已含 NaN 掩膜时跳过矢量擦除;
形态学闭运算填充掩膜小孔洞
- NDWI: int16→float32 防止减法溢出
- 面板注册表: 步骤模块分组重构 (模块一/二/三/四重划分)
|
2026-07-26 20:35:50 +08:00 |
|
|
|
9fa60e2995
|
fix: CRS 比较改用 GDAL osr.IsSame() 语义比对, 消除 WKT 格式差异误报
问题: 两组不同数据的 .hdr 文件由不同软件生成,
同一 UTM 投影的 WKT 字符串格式不同 (PROJCS 命名/参数精度),
原 validate_projections 用字符串比较会误报 CRS 不一致。
修复: 改用 gdal.osr.SpatialReference.IsSame() 语义比对:
- 同一定义 → 通过 (即使 WKT 格式不同)
- 真正不同 → 报错
- osr 解析失败 → 回退字符串比较
|
2026-07-09 09:37:50 +08:00 |
|
|
|
1f6c81158b
|
fix: 动态查找 PROJ/GDAL 路径 + Warp 1 像素浮点舍入容错
**water_quality_gui_v2.py:**
- 废弃硬编码 conda_env 路径
- 新增 _find_and_set_gdal_env(): 基于 sys.prefix 自动推断
Library/share/proj 和 Library/share/gdal,验证 proj.db 存在后
强设 PROJ_LIB 和 GDAL_DATA 环境变量
- 兼容 Windows (Library/share/...) 和 Linux/Mac (share/...) 路径
**preview_generator.py _warp_mask_to_image():**
- 尺寸验证从严格相等改为 ±2 像素容差
- 新增 _snap_array_to_shape(): warp 输出与 target_shape
相差 ≤2px 时自动 slice(截断)或 pad(填充),不再回退到盲读模式
- 解决坐标系转换浮点舍入导致的 1048x522 vs 1047x521 问题
|
2026-07-07 10:01:31 +08:00 |
|
|
|
826f110894
|
fix: 防御性编程重构 — 栅格空间对齐 + NoData 处理 + 高危代码加固
**核心修复 (preview_generator.py):**
- 废弃 _align_mask_to_image() (numpy crop/pad 在地理空间上错误)
- 新增 _warp_mask_to_image(): 使用 gdal.Warp 将掩膜重采样到与底图
完全一致的像素网格,处理旋转/偏移/投影差异
- 新增 _normalize_mask(nodata_value): 正确的掩膜值域自劢归一间 (0/1 vs 0/255)
- 修复 alpha = mask_data/255.0 → mask_data (掩膜是二值 0/1, 不是 0/255)
- 面积计算 valid_pixels 使用 warp 前数据排除 nodata 背景
**新增防御工具模块:**
- spatial_validator.py: SpatialAlignmentError 自定义异常 +
validate_two_rasters() / validate_spatial_alignment() 强制空间一致性检查 +
has_rotation() / get_pixel_resolution() 诊断工具
- nodata_handler.py: read_band_safe() / read_bands_safe() 自动 NoData→nan +
read_band_masked() 返回 MaskedArray + create_valid_mask()
**P0 高危代码集成 (3处):**
- sampling.py: 耀斑掩膜与水体掩膜 bool 运算前验证 numpy shape 一致
- find_severe_glint_area.py: 栅格 mask 读取后验证 dims+GT+projection 对齐
- waterindex_inversion/__init__.py: mask 与 BSQ 维度验证, 不一致时优雅降级
**旋转影像兼容性修复:**
- extract_water_area.py: pixel_size = sqrt(gt[1]^2+gt[2]^2) 使用勾股定理
正确计算旋转影像的像素分辨率
|
2026-07-07 09:10:40 +08:00 |
|
|
|
a3c20d3e49
|
格式统一
|
2026-07-01 09:57:27 +08:00 |
|
|
|
d6c003a211
|
fix: Step7 UI坍塌修复+EventBus打通 + DRY抽离spxy/ks + GridSearchCV→RandomizedSearchCV + smoke test死链修复
|
2026-06-18 11:18:27 +08:00 |
|
|
|
dcbcc043e4
|
refactor: 渐进式模块化重构 — 剥离可视化层、工具层、算法层到独立模块
|
2026-05-09 17:18:34 +08:00 |
|