|
|
8f01624171
|
fix: step7 filter bar split into 2 rows - row1: combo+selectAll+clear, row2: ratio+conc+reload+count
|
2026-07-10 11:58:58 +08:00 |
|
|
|
600400a4d9
|
fix: step13 auto-detect report mode on panel load (in _auto_pull_work_dir), not just on generate click
|
2026-07-09 15:38:47 +08:00 |
|
|
|
208e067334
|
feat: step13 auto-detect mode + user confirmation combo (with fallback to manual override)
|
2026-07-09 15:33:45 +08:00 |
|
|
|
66a181cbe2
|
feat: step13 auto-detect ML vs formula mode like step11, remove manual selector
|
2026-07-09 15:21:45 +08:00 |
|
|
|
3f4cb94929
|
fix: clean up step13 mode selector labels - remove misleading step numbers
|
2026-07-09 15:18:55 +08:00 |
|
|
|
a13b4be6d4
|
feat: formula report AI analysis per distribution map with configurable limit in UI panel
|
2026-07-09 15:03:39 +08:00 |
|
|
|
650e505ac4
|
feat: 报告生成模块双轨制重构 — 公式模式 + ML 模式独立分流
**UI (step13_report_panel.py):**
- 新增 QComboBox 报告模式选择:
机器学习(ml) / 水色指数公式(formula)
- WorkerThread 传递 report_mode 到 generate_report
**后端 (report_word.py):**
- generate_report(report_mode='ml'/'formula') 参数路由
- _generate_formula_report(): 水色指数专属结构
1.项目背景 → 2.影像预处理 → 3.公式列表 →
4.指数统计(10_WaterIndex_CSV) → 5.分布专题图(11_Thematic_Map)
绝不包含模型训练/R²/RMSE 等 ML 内容
- _generate_ml_report(): 原有 ML 逻辑完整保留
- _analyze_statistics(): 全部改用 .get() 防御式读取
兼容 参数/Parameter/name, 点位数/数量/count,
最小值/min, 最大值/max, 平均值/mean, 标准差/std
|
2026-07-09 11:33:50 +08:00 |
|
|
|
f496b28c8c
|
fix: 回退 setWidgetResizable(False) 恢复图像显示 + 保留滚动条策略修复
setWidgetResizable(False)+QSizePolicy.Ignored 导致 QLabel
无有效 sizeHint, 图像不显示。
回退为 setWidgetResizable(True), 保留显式 ScrollBarAsNeeded
策略 (原默认可能为 AlwaysOff 导致滚动条异常)。
|
2026-07-08 17:55:34 +08:00 |
|
|
|
7921e21750
|
fix: step4 采样点过密 — 提高自适应下限 + 默认关闭自适应模式
问题: min_interval=10 导致每个水面产生数千个密集采样点 (8242点)
修复:
1. sampling.py: min_interval 默认值 10→50 (提高 5×)
两个入口函数同步修改 (chunked + full)
2. step4_sampling_panel.py: 自适应采样复选框默认 False
用户设置的固定间隔 (interval=100px) 真正生效
|
2026-07-08 16:03:42 +08:00 |
|
|
|
197f58c187
|
fix: step12 图像预览横向滚动条被挤出视口底部
根因: QScrollArea.setWidgetResizable(True) 强制 QLabel 填充视口,
与缩放后 QLabel 的 pixmap 固有尺寸冲突,滚动条布局异常。
修复:
1. setWidgetResizable(False) — QLabel 保持 pixmap 自然尺寸
2. QScrollArea SizePolicy → Expanding×Expanding (受父布局约束)
3. ScrollBarPolicy → AsNeeded (显式设置)
4. QLabel SizePolicy → Ignored (按内容自适应大小)
缩放行为:
- 放大超出视口 → 自动出现滚动条
- 缩小/适应窗口 → QLabel 自动缩至 pixmap 尺寸, 无滚动条
|
2026-07-08 15:24:44 +08:00 |
|
|
|
6b6e593fa5
|
fix: 修复 pip wheel GDAL 的 proj.db 未被找到的 bug
根因: pip 安装的 GDAL ≥3.5 把 proj.db 放在
{site-packages}/osgeo/data/proj/proj.db
而之前的代码将其加入 prefixes 列表后,搜索循环只查找
{prefix}/Library/share/proj/ 子目录,
导致 site-packages 中的 v6+ proj.db 被漏掉。
修复:
1. 新增独立搜索步骤:直接扫描 site-packages 下
osgeo/data/proj/ 和 osgeo/proj_data/ 目录
2. 找到 v6+ 版本后直接设为 proj_lib,
不再经过前缀子目录搜索(优先级最高)
3. 同时扫描 site-packages/fiona/proj_data/,
找到旧版时打印明确路径警告,
确认 PROJ_DATA 已覆盖该旧版
4. 仅 site-packages 未找到时回退到前缀搜索
|
2026-07-07 16:47:02 +08:00 |
|
|
|
721370f3e5
|
fix: 新增 PROJ_DATA 环境变量 + 屏蔽 Fiona 内部旧版 PROJ 数据库
问题: visualize_raster 阶段 fiona 库内部捆绑了老旧的 PROJ 数据库
(VERSION.MINOR=2),导致读取掩膜时投影错乱 — 底图 51N 被误解析为
49N,矢量掩膜物理擦除时把所有水体当成陆地,有效像元变成 0/15300。
修复:
1. 新增 os.environ['PROJ_DATA'] = proj_lib
Fiona ≥1.4 / Rasterio ≥1.4 / GDAL ≥3.5 / PROJ ≥8 优先读取此变量
2. PROJ_NETWORK = OFF — 禁用 PROJ 网络下载,避免意外行为
3. 打印明确日志确认全进程 PROJ 来源统一
效果: 所有空间组件(GDAL / PROJ / Fiona / Rasterio / pyproj)
强制使用同一套 conda 环境下的 proj.db (v6+),彻底杜绝 fiona 内部
捆绑的 v2 旧版干扰。
|
2026-07-07 16:40:51 +08:00 |
|
|
|
da773b139f
|
fix: 彻底解决 PROJ 版本冲突 — 深度搜索 conda env + pip wheel 中的 proj.db
问题: step11 所有内容报错:
'C:\ITRES\ATK\app\GDAL\projlib\proj.db contains
DATABASE.LAYOUT.VERSION.MINOR = 2 whereas a number >= 6 is expected'
原因: 系统有旧版 GDAL (C:\ITRES\ATK\app\GDAL), 其 proj.db 为 v2,
GDAL 内部搜索先找到旧版 → PROJ 坐标转换全部失败
增强的搜索策略 (由简到深):
1. Python 可执行文件位置回推 prefix (最可靠)
2. sys.path 中 site-packages 回推所有 conda/env 前缀
3. CONDA_PREFIX + sys.prefix + CONDA_ROOT
4. PATH 中推断 conda 安装路径
5. 硬编码已知路径
6. 扫描 conda 根下的 envs/*/ 所有环境
7. pip wheel 路径: {site-packages}/osgeo/data/proj/
新增 proj.db 版本检测:
- _check_proj_db_version(): 读取 SQLite 头,
通过文件大小判定 v6+ (>3MB) 或 v2 (<3MB)
- 仅选择 v6+ 的 proj.db 设置 PROJ_LIB
新增递归搜索:
- _find_proj_in_prefix(): 在 prefix 下深度搜索 Library/share/proj/
限制深度 6 层避免全盘扫描
找不到时打印明确的修复建议:
'请手动设置: set PROJ_LIB=<conda环境>\Library\share\proj'
|
2026-07-07 16:23:38 +08:00 |
|
|
|
d6057c3d70
|
fix: 大尺度影像处理超时 — 心跳线程 + 日志复位看门狗 + 延长至1小时
问题: 用户处理 6522x13215x150 大影像,step3 Goodman 逐波段
C/NumPy 运算耗时超过 10 分钟,期间无 Qt 信号发出,看门狗误判
为假死并强制终止。
修复 (三层防护):
1. WorkerThread 心跳线程:
- 新增独立 daemon 线程,每 30s 发射 log_message 信号
- PyQt 信号线程安全,跨线程 emit 自动排队到主线程
- 确保长时间 C 运算期间看门狗持续收到保活信号
- run() finally 中自动停止心跳
2. 日志消息也复位看门狗:
_on_log_message() 现在与 _on_progress_update() 一样更新
_last_progress_time —— 任何来自 Worker 的通讯都代表存活
3. 超时阈值 600s → 3600s (1小时):
大尺度影像处理 1 小时足够覆盖极端场景
|
2026-07-07 11:31:22 +08:00 |
|
|
|
a03798418f
|
fix: 增强 PROJ/GDAL 环境检测 — 多级回退搜索策略
问题: sys.prefix 指向 test_env,该环境不含 GDAL/PROJ 数据文件,
导致 _find_and_set_gdal_env() 找不到 proj.db。
修复: 按优先级扩展搜索路径:
1. CONDA_PREFIX 环境变量(当前激活的 Conda 环境)
2. sys.prefix(Python 安装前缀)
3. CONDA_ROOT / MAMBA_ROOT_PREFIX
4. 从 PATH 推断 conda 安装根目录
5. 硬编码回退(WQ_GUI 路径 + 常见目录 ProgramData)
每个前缀尝试 Windows (Library/share/...) 和 Linux (share/...) 子目录。
找不到时打印已搜索前缀数量供用户诊断。
|
2026-07-07 10:38:16 +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 |
|
|
|
78818bbc50
|
fix: 在 water_quality_gui_v2.py 顶部强制绑定 Conda 环境的 GDAL/PROJ 路径,防止系统环境变量干扰
|
2026-07-07 09:55:53 +08:00 |
|
|
|
c46f78e69d
|
fix: 补齐缺失的 handler 文件 + IDW 插值退化检测 + V1 代码归档
|
2026-07-06 15:57:29 +08:00 |
|
|
|
f3aca09df4
|
1.2.1
|
2026-07-06 10:01:55 +08:00 |
|
|
|
34ed062c77
|
1.2.1
|
2026-07-01 17:35:57 +08:00 |
|
|
|
385e5915af
|
格式统一
|
2026-07-01 17:33:52 +08:00 |
|
|
|
1824d62d10
|
格式统一
|
2026-07-01 15:12:25 +08:00 |
|
|
|
1611001a72
|
格式统一
|
2026-07-01 13:19:46 +08:00 |
|
|
|
8de73db80e
|
格式统一
|
2026-07-01 11:32:32 +08:00 |
|
|
|
a3c20d3e49
|
格式统一
|
2026-07-01 09:57:27 +08:00 |
|
|
|
c793ea2204
|
格式统一
|
2026-06-30 14:12:12 +08:00 |
|
|
|
9e433395f4
|
feat: 波长偏移修正 + 项目架构文档
- BandMathCalculator 支持 wavelength_offset 参数,公式波长统一加减偏移后匹配传感器波段
- WaterQualityIndexCalculator 全链传递偏移量 (band_math → calculate_one → calculate_many)
- WaterIndexCsvProcessor / Step7Handler / DataPreparationStep 传播偏移参数
- Step7/Step10 面板新增 QDoubleSpinBox 波长偏移控件 (±200nm, 默认0)
- 偏移控件去除单位后缀,避免编辑时需手动移动光标
- 新增 ARCHITECTURE.md 完整项目架构文档
|
2026-06-30 13:13:38 +08:00 |
|
|
|
8ff5b08190
|
imput导入修正,去除掉废弃内容
|
2026-06-30 11:32:40 +08:00 |
|
|
|
f05916bc3a
|
步骤四的采样点和对应的光谱图像展示修正
|
2026-06-30 10:45:20 +08:00 |
|
|
|
73cb019a4a
|
refactor: 重构所有面板 update_from_config 为文件系统扫描模式
=== 核心变更 ===
- _step_path_resolver 新增 scan_work_dir_for_input() 统一文件扫描工具
- 基于 _SCAN_TABLE 映射表,按 output_type 自动扫描 work_dir 子目录
- 支持扩展名匹配(.dat/.tif/.bsq/.csv 等)和文件名关键词匹配
- 按 mtime 排序,返回最新匹配文件
=== 各面板重构 ===
- step2/3/4/6: 废弃 main_window.stepX_panel 跨面板读取
统一改为 scan_work_dir_for_input(work_dir, 'water_mask/glint_mask/deglint_image')
- step6: 移除对 step1/2/3/5 panel 的4处跨面板依赖
- step8: 替换 _resolve_training_csv_from_workdir 为 scan_work_dir_for_input
优先级:training_spectra_indices -> training_spectra
- step9: 替换 _resolve_latest_wqi_test_csv 为 scan_work_dir_for_input
废弃 factory.get_panel('step4_sampling') 和 get_panel('step8_ml_train')
- step10: 替换3层回退链为 scan_work_dir_for_input('sampling_points')
- step11: 替换 factory.get_panel('step9')/('step1') 为文件扫描
=== 删除的冗余方法 ===
- step8._resolve_training_csv_from_workdir (~55行)
- step9._resolve_latest_wqi_test_csv (~56行)
=== 数据流原则 ===
1. pipeline context 为第一顺位(执行时内存状态)
2. 文件系统扫描为回退(仅信任硬盘上真实存在的文件)
3. 彻底禁止面板间 UI 控件互相读取
|
2026-06-30 09:53:23 +08:00 |
|
|
|
1bdd623fe7
|
style: Step4 图表中文排版升级,对齐Step12风格
- 添加 matplotlib rcParams 中文字体配置(Microsoft YaHei / SimHei)
- 散点图标题→'采样点空间分布',坐标轴→'经度/X'、'纬度/Y'
- 光谱图标题→'采样点 ID: X 光谱曲线',坐标轴→'波长/特征'、'反射率'
- 悬停提示框中文化:ID + 经度 + 纬度
- 标题字号统一为 fontsize=14 fontweight='bold' pad=12
- 轴标签字号统一为 fontsize=11
|
2026-06-30 09:45:50 +08:00 |
|
|
|
48d17ef0ca
|
fix: 全局UX修复与Step4交互可视化重构
=== 自动填入过于激进(幽灵路径级联)===
- 所有面板 update_from_config 移除 os.makedirs(),目录创建留给 pipeline 执行
- 输出路径仅 widget 为空时填入默认值,不覆盖用户已选
- 输入路径从上游读取后添加 os.path.exists() 检查,阻断幽灵路径级联
- panel_factory._replay_live_panel_inputs 广播前校验文件确实存在
- step10 update_from_config 添加 os.path.isfile() 存在性检查
- 清理 step8/9/11 中冗余局部 import os(修复 UnboundLocalError)
=== 输出目录缺失 ===
- step7 新增 output_file FileSelectWidget,默认路径 7_Water_Quality_Indices/
- step9 output_file 从文件模式改为目录模式 (Directories)
=== 空目录自动创建 ===
- step12 _setup_prediction_output_dirs 移除 mkdir() 调用,改为只读日志
=== 过期依赖与缺失 import ===
- panel_registry Step10 依赖 bsq_file→sampling_csv_file(匹配 CSV 模式重构)
- step7 添加缺失的 import pandas as pd(修复 NameError)
=== 导航与 UI 一致性 ===
- water_quality_gui_v2 新增 _select_first_nav_item(),启动时默认选中第一项
- step1 输出卡片对齐 step8 风格
- step8 补充缺失的样式表和统一边距
=== Step4 交互式光谱探针重构 ===
- 左右分栏 QSplitter 布局:左侧控制区 + 右侧 Matplotlib 视图
- 1x2 子图:ax1 散点图 + ax2 光谱曲线
- Hover 悬停 Annotation 显示坐标,Click 点击高亮+绘制光谱
- NavigationToolbar2QT 工具栏(保存/缩放/平移)
- 自动检测坐标列和波段列,完善异常处理
|
2026-06-30 09:38:27 +08:00 |
|
|
|
e337f01312
|
全局修正
|
2026-06-29 16:16:55 +08:00 |
|
|
|
2788fb3fe1
|
全局弹窗修正
|
2026-06-29 15:21:30 +08:00 |
|
|
|
61e06dd789
|
步骤十三页面修改
|
2026-06-29 15:15:09 +08:00 |
|
|
|
e121b02e34
|
Step8/9 UX: feature_start 改 QComboBox + 多源 CSV 优先回退
|
2026-06-29 14:40:39 +08:00 |
|
|
|
b82efc1e52
|
步骤十二页面修改
|
2026-06-29 14:31:31 +08:00 |
|
|
|
c6c0b8fdf5
|
步骤十一页面修改
|
2026-06-29 11:11:32 +08:00 |
|
|
|
ef24398df9
|
步骤十页面修改
|
2026-06-29 10:16:12 +08:00 |
|
|
|
14ea72a4e7
|
步骤九页面修改
|
2026-06-26 17:13:14 +08:00 |
|
|
|
23f391eedf
|
步骤八页面修改
|
2026-06-26 16:59:24 +08:00 |
|
|
|
9ab916a61c
|
步骤七页面修改
|
2026-06-26 16:43:28 +08:00 |
|
|
|
abbe218608
|
步骤六页面修改
|
2026-06-26 13:56:57 +08:00 |
|
|
|
5fb2db4a07
|
步骤五页面修改
|
2026-06-26 13:54:09 +08:00 |
|
|
|
7293ddd5ee
|
步骤四页面修改
|
2026-06-26 13:51:10 +08:00 |
|
|
|
6e4f0f5527
|
步骤二页面修改
|
2026-06-26 13:24:56 +08:00 |
|
|
|
e54c2b8fe6
|
步骤一页面修改
|
2026-06-26 13:07:22 +08:00 |
|
|
|
f63e6bce05
|
整体框架修改
|
2026-06-26 09:47:52 +08:00 |
|
|
|
ea5d80041d
|
整体框架修改
|
2026-06-26 09:45:11 +08:00 |
|
|
|
bcd1ce371e
|
页面4样式修改
|
2026-06-26 09:45:00 +08:00 |
|