6a962f5e8f490f9cde3897dbf380811274785840
1. main_view.py:图标系统 + 全链路参数自动传导
- 新增 _res() 解析项目根的相对路径,PyInstaller 打包后兼容 sys._MEIPASS。
- 新增 QListWidgetItem / QMessageBox 导入,左侧导航列表支持右键菜单 + 错误弹窗。
- ROUTES 12 条全部新增 icon 字段("1.png" 等),侧边栏显示业务图标。
- 新增 step_outputs 缓存机制:每个 step 完成后把 output_path 写入 self.step_outputs。
- 新增 _sync_dependencies() 同步函数 + _safe_set_config() 包装器,
按依赖图把上游产物推给下游 view:
step1 → step6 water_mask_path
step3 → step4 / step6 / step10 deglint_img_path / bsq_path
step4 → step9 sampling_csv_path
step5 → step6 csv_path
step6 → step7 / step8 training_csv_path
step8 → step9 models_dir(父目录)
step9 → step11 prediction_csv_dir / prediction_csv_path(双推)
step10 → step11 geotiff_dir / geotiff_path(双推)
2. services/step1-13:统一输出解析器集成
- 新增 src/new/services/_output_resolver.py,提供 resolve_output_dir /
copy_to_user_path / get_user_output_path / is_user_specified 四个共享工具。
- 每个 service 把原有的私有 _resolve_xxx_dir 改为调用 resolve_output_dir,
强制执行"用户优先"规则(用户指定 output_path 时用其父目录,否则用 work_dir/<subdir>)。
- 用户指定文件名 vs 底层硬编码文件名的"事后劫持"通过 copy_to_user_path 完成
(覆盖 step2、step4、step7、step8 等底层 step 不接受 output_path 关键字的步骤)。
3. views/step12_view.py:恢复 ImageCategoryTree + ImageViewerWidget 高级组件
- 删掉精简版占位 Label,挂回旧版的 ImageCategoryTree(按"模型评估/光谱分析/
统计图表/处理结果/含量分布图"五类自动归类工作目录下的图像文件)。
- 挂回 ImageViewerWidget(滚轮缩放 0.1x-5x + 50ms 防抖 + FastTransformation/
SmoothTransformation 智能切换 + Ctrl+Wheel + 工具栏)。
- 扫描按钮接通 image_tree.scan_directory(),选中节点即时加载到 image_viewer。
- 按钮样式切换为 ModernStylesheet(success/primary)统一视觉。
水质参数反演分析系统 (Water Quality Inversion Analysis System)
基于遥感影像处理和机器学习技术的水质监测专业软件系统,集成了完整的水域识别、耀斑处理、光谱提取、模型训练和预测分析流程。
🚀 主要特性
- 多算法耀斑去除 - 支持Goodman、Kutser、Hedley、SUGAR等多种去耀斑算法
- 智能水域识别 - 基于NDWI阈值分割和Shapefile掩膜的自动水域提取
- 机器学习建模 - 支持多种机器学习算法(随机森林、XGBoost、神经网络等)
- 非经验统计回归 - 基于物理原理的叶绿素a、总氮、总磷等参数反演
- 高精度空间插值 - 距离扩散插值生成平滑的水质分布图
- 可视化分析 - 丰富的图表展示和空间分布可视化
- 用户友好界面 - 基于PyQt5的图形化操作界面
📋 系统要求
硬件要求
- 处理器: Intel Core i5 或同等性能以上
- 内存: 8GB RAM(推荐16GB)
- 存储: 至少10GB可用空间
- 显卡: 支持OpenGL 3.0以上
软件要求
- 操作系统: Windows 10/11, Linux, macOS
- Python版本: 3.8+
- 必要依赖: GDAL, NumPy, Pandas, Scikit-learn, PyQt5等
🛠️ 安装
方式1:从源码安装
# 克隆仓库
git clone https://github.com/waterquality/water-quality-inversion.git
cd water-quality-inversion
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/macOS
# 或
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
# 安装包
pip install -e .
方式2:使用pip安装
pip install water-quality-inversion
🎯 快速开始
图形界面模式
water-quality-gui
命令行模式
water-quality-pipeline --config config.yaml
Python API
from water_quality_inversion import WaterQualityInversionPipeline
# 创建流水线实例
pipeline = WaterQualityInversionPipeline()
# 运行完整分析流程
pipeline.run()
📖 使用指南
基本工作流程
-
步骤1: 水域掩膜生成
- 支持Shapefile文件或NDWI自动提取
- 生成水域范围的栅格掩膜
-
步骤2: 耀斑区域检测
- 支持Otsu、Z-score、百分位数等多种检测方法
- 生成耀斑区域掩膜
-
步骤3: 耀斑去除
- Goodman、Kutser、Hedley、SUGAR四种算法
- 支持多种插值修复方法
-
步骤4: 数据预处理
- CSV数据清洗和异常值检测
- 数据标准化和特征工程
-
步骤5: 光谱提取
- 基于采样点的光谱特征提取
- 支持多种采样半径和统计计算
-
步骤5.5: 水质指数计算
- 基于光谱特征计算水质指数
- 支持自定义公式和18种水质参数
-
步骤6: 机器学习建模
- 支持18种机器学习算法
- 11种光谱预处理方法
- 3种数据划分策略
-
步骤6.5: 非经验统计回归
- 6种水质参数的非经验模型
- 基于物理原理的参数反演
-
步骤6.75: 自定义回归分析
- 完全自定义的回归分析
- 探索性数据分析工具
-
步骤7: 采样点生成
- 规则网格采样点生成
- 智能边界处理
-
步骤8/8.5/8.75: 参数预测
- 机器学习预测
- 非经验模型预测
- 自定义回归预测
-
步骤9: 分布图生成
- 空间插值和栅格化
- 多格式输出(GeoTIFF, PNG, PDF)
🏗️ 项目结构
water-quality-inversion/
├── src/ # 源代码目录
│ ├── core/ # 核心算法模块
│ │ ├── glint_removal/ # 耀斑去除算法
│ │ ├── modeling/ # 建模算法
│ │ └── prediction/ # 预测算法
│ ├── preprocessing/ # 数据预处理模块
│ ├── postprocessing/ # 后处理模块
│ ├── visualization/ # 可视化模块
│ ├── utils/ # 工具函数
│ └── gui/ # GUI界面
├── data/ # 数据目录
│ ├── input/ # 输入数据
│ ├── output/ # 输出结果
│ └── models/ # 模型文件
├── docs/ # 文档目录
├── scripts/ # 构建和部署脚本
├── tests/ # 测试目录
├── requirements.txt # 依赖文件
├── setup.py # 安装配置
├── pyproject.toml # 项目配置
└── README.md # 项目说明
🤝 贡献
欢迎贡献代码!请查看 CONTRIBUTING.md 了解详细信息。
开发环境设置
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 代码格式化
black src/
isort src/
# 类型检查
mypy src/
📄 许可证
本项目基于 MIT 许可证开源 - 查看 LICENSE 文件了解详情。
📚 引用
如果您在研究中使用了本系统,请引用:
@software{water_quality_inversion,
title = {Water Quality Inversion Analysis System},
author = {Water Quality Research Team},
url = {https://github.com/waterquality/water-quality-inversion},
version = {1.0.0},
year = {2025}
}
📞 联系我们
- 项目主页: https://github.com/waterquality/water-quality-inversion
- 问题反馈: https://github.com/waterquality/water-quality-inversion/issues
- 邮箱: support@waterquality.com
🙏 致谢
感谢所有为本项目做出贡献的开发者们!
水质参数反演分析系统 - 让水质监测更智能、更精准!
Description
Languages
Python
100%