|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
a3c20d3e49
|
格式统一
|
2026-07-01 09:57:27 +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 |
|
|
|
f63e6bce05
|
整体框架修改
|
2026-06-26 09:47:52 +08:00 |
|
|
|
ea5d80041d
|
整体框架修改
|
2026-06-26 09:45:11 +08:00 |
|
|
|
c5a82ec342
|
refactor(gui/sidebar): 重组导航为四模块 + 扁平无框蓝色高亮主题 + 中括号移除
数据层(panel_registry.py):13 个 step 从「阶段一/二/三/四」重组为四个模块
模块一 影像预处理(step 1-3)
模块二 特征工程与数据(step 4-7)
模块三 模型训练与反演(step 8-10)
模块四 制图与成果汇编(step 11-13)
step_id 顺序、tab_index、面板绑定、Tab 路由全部保持零变化
文本层(water_quality_gui.py / v2):移除 └─ 字符前缀
样式层(styles.py:get_sidebar_stylesheet):扁平无框 + 蓝色高亮主题
- 容器 QListWidget 无框化(border: none / outline: none / 透明背景)
- 步骤项 padding 8px 6px + margin 2px 8px + border-radius 4px
- hover 极浅蓝灰 #F0F4F8;selected 饱和蓝 #0078D4 + 白字 #FFFFFF
- 分类头(stage_header):!enabled 选择器锁定 → 蓝色 #0078D4 + 加粗 + 上下间距
Python 代码侧:stage_item.setForeground 硬编码 #0078D4、stage_font.setBold(True)
作为 QSS 失效兜底 + 代码意图自解释
末尾迭代:四个模块名移除 [ ] 中括号(极简风)
|
2026-06-23 16:50:30 +08:00 |
|
|
|
b8d263e494
|
测试修改
|
2026-06-23 14:39:54 +08:00 |
|
|
|
b2435d66c3
|
fix: 终极状态回滚 + 三个 panel 短路径导包修复
- water_quality_gui_v2.py:回滚机制由 panel_registry.get_tab_index 改为基于 PANEL_REGISTRY[current_tab_idx]['step_id'] 的索引反查,消除不存在的 get_tab_index 导致回滚期间二次崩溃并被静默吞噬的幽灵跳步根因
|
2026-06-18 14:55:14 +08:00 |
|
|
|
e5bb9c5cd9
|
fix: 懒加载导航容错 + 状态回滚机制 + Step 11 NameError 修复
导航容错(v2._on_step_list_changed)
- try-except 包裹懒加载 + setCurrentIndex,避免导航崩溃导致左右脱节
- 新增状态回滚机制:右侧切换失败时强制将左侧导航栏选中项退回当前显示 tab_index 对应的 step,消除"幽灵跳转/假死"(blockSignals 防 setCurrentRow 二次触发回调)
Step 11 NameError
- step11_map_panel 顶部补 import get_step_output_path,消除 update_from_config 中 NameError
|
2026-06-18 13:59:30 +08:00 |
|
|
|
f61a3dfb1d
|
feat: 懒加载面板Catch-up状态回放 + 上一步/下一步向导导航按钮
|
2026-06-18 11:18:37 +08:00 |
|
|
|
2d45610aa6
|
fix: 导航状态锁防抖 + 运行按钮中间槽函数(修复乱跳与无响应双 Bug)
Bug1 导航乱跳:_on_step_list_changed 先调 get_panel 触发懒加载再 setCurrentIndex,避免 removeTab/insertTab 索引偏移导致跳页错乱。_on_tab_changed 加 _is_syncing 守卫斩断乒乓效应。Bug2 按钮无响应:新增 _on_run_all_clicked 中间槽函数替代直接连接,内含 print 探针 + try/except 兜底。
|
2026-06-18 09:01:25 +08:00 |
|
|
|
39e8c29913
|
refactor: 实现第二批 Manager(LogManager/ConfigManager/DialogService/TrainingModeManager)
- log_manager.py: 日志区+进度条+清空按钮封装,内部订阅 LogMessage/ProgressUpdate
- config_manager.py: 配置读写(new/load/save/get_current_config),懒加载安全(未加载面板返回 {})
- dialog_service.py: 纯展示弹窗封装(Pipeline状态/关于/AI设置)
- training_mode_manager.py: 训练模式切换,发布 TrainingModeChanged 事件
- water_quality_gui_v2.py: 725→605 行,菜单回调全部委托给 Manager,移除 _create_log_panel/_create_progress_panel/_on_log_message/_on_progress_update
|
2026-06-17 17:35:27 +08:00 |
|
|
|
19c86e6e44
|
refactor: 实现纯壳主窗口 + 第一批 Manager(PanelFactory/PipelineExecutor/WorkspaceInitializer)
- water_quality_gui_v2.py: 纯壳主窗口(725行),依赖注入链 + EventBus 驱动,7个菜单连线
- panel_factory.py: PanelFactory 懒加载工厂(占位页替换 + 邻接预加载)
- pipeline_executor.py: PipelineExecutor 核心调度(接管 run_full_pipeline/run_single_step/stop_pipeline)
- workspace_initializer.py: WorkspaceInitializer 环境初始化(接管 init_workspace/set_work_directory/auto_populate_all)
|
2026-06-17 17:18:15 +08:00 |
|