# iPyGIRS
**Repository Path**: godlikes/iPyGIRS
## Basic Information
- **Project Name**: iPyGIRS
- **Description**: iPyGIRS是一款主要用以GIS与遥感数据处理领域,完全基于Python开发的机器学习建模软件。
- **Primary Language**: Python
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 50
- **Created**: 2020-02-02
- **Last Updated**: 2021-11-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# iPyGIRS
## **1. 介绍**

上图是iPyGIRS-V0.2.0-Beta软件的主界面。如下图(该图为iPyGIRS未来完工时所具备的功能示意图,目前仅有部分功能)所示,iPyGIRS是一个以栅格图像处理和机器学习建模为核心功能,集成了数据预处理、图表绘制、张量计算器、样本创建、像元值提取、波段分离、波段计算、图像融合、经验模型建模、方程应用、MySQL数据库管理、GeoServer数据发布等功能的软件,该软件完全基于Python语言(版本3.7.5)开发,可应用于多种遥感监测研究中。目前公开的最新可用版本为V0.2.1-Beta,后续保持持续更新。

## **2. 软件架构**
iPyGIRS及其安装二进制程序完全基于Python开发,软件架构如下图所示。当程序启动时:
- ①首先启动“Python解释器”,读取程序的全局设置文件,随后加载主程序界面,显示给用户;
- ②“统一文件读写接口”准备就绪,可供“系统设置”工具、“多进程任务消息管理工具”、“各大工具集中的工具或组件”对本地磁盘进行读写操作;
- ③“各大工具集中的工具或组件”,首先读取全局配置文件中相应的工具属性设置,工具或组件被点击时,以“非模态窗口”显示给用户,数据则是通过“统一文件读写接口”传入;
- ④“多进程任务消息管理工具”在后台以独立进程运行,“各大工具集中的工具或组件”以“非模态窗口”显示,关闭后可在后台运行,运行中的错误、警告、成功等消息有该管理工具提供显示。

## **3. 最新版本及更新**
**当前最新可用版本:V0.2.1**,通过本次更新,您将能能更好、更方便地安装iPyGIRS程序。本次更新,已将Embeddable-Python3.7.5及其pip工具一起打包发布。删除原使用“InstallPackages.bat”进行Python依赖包安装的方式,现改为使用已发布的二进制GUI安装程序,但这和以前一样,依然需要您提前下载好相关的包,这以**GUI安装程序中要求的包及版本号为准。** 只有二进制安装程序执行成功后,才能生成iPyGIRS主程序的启动脚本“iPyGIRS-V0.2.1-Beta.bat”。本版本的更新内容如下所示:
1. 修复了“栅格数据工具”——“像元值提取”工具中的Bug。该Bug导致输入多个影像时,当影像的波段数不一致,程序会报索引超出边界错误;
2. 修复了不能将绘制的学习曲线保存到本地的Bug;
3. 优化了“机器学习工具”——“scikit-learn机器学习”工具的计算逻辑,不再是及其耗时地重复地从“GridSearcCV”中的模型绘制曲线,而是使用从“GridSearcCV”中找到的最优模型绘制学习曲线。
4. 解决了“scikit-learn机器学习”工具的错误。在“调试参数”模式下,当K折交叉验证的的K值大于验证样本数时,程序会发生异常而奔溃闪退,该版本已解决该问题,当错误的K值输入时,程序将出发弹窗报错以提醒用户纠正错误参数;
## **4. 安装方法**
该软件目前只支持64位的Windows 7、Windows10系统,建议在以上两个系统环境下安装。(未来会推出Linux版本)
### **(1)下载iPyGIRS项目文件**
将iPyGIRS项目文件下载到本地后解压,正确的文件目录结构应该如下所示:
``` file directory tree
|- iPyGIRS
|- docs
|- images
|- Installer-V0.2.1-Beta
|- iPyGIRS-V0.2.0-Beta
|- appUI
|- bin
|- chart
|- data
|- fileIO
|- MathLib
|- model
|- python-3.7.5-embed-amd64
|- raster
|- resource
|- util
|- Installer-V0.2.1-Beta.exe
|- LICENSE
|- README.zh.md
```

### **(2)下载第三方Python包**
双击“Installer-V0.2.1-Beta.exe”安装程序,点击程序界面中提供的两个网址,下载安装程序中所列出的第三方Python包,**所有的包须下载到同一个文件夹下!!!** 下表仅列出了iPyGIRS部分依赖包,推荐学习Python的小伙伴重点学习这些包的使用。


包名称|作用
:-|:-
numpy+mkl|为iPyGIRS中的表格数据处理、栅格数据处理,提供快速且强大的二维数组、矩阵的创建、运算功能
numba|为iPyGIRS中的nd-array数据(numpy)类型提供大幅加速功能
numexpr|符号运算库,为iPyGIRS提供符号运算功能,即字符、字符串当成内存可识别的计算公式
scipy|科学计算库,为iPyGIRS提供方程解算、最小二乘法优化算法、线性代数计算等功能
xlrd|为pandas提供xls格式的excel文件读写底层依赖
openpyxl|为pandas提供xlsx格式的excel文件读写底层依赖
pandas|为iPyGIRS程序提供excel、csv等文件的读写功能
matplotlib|为iPyGIRS程序提供散点图、折线图、直方图等统计图表绘制功能,且可以整合到PyQT5控件中显示
GDAL|为rasterio包提供底层依赖
rasterio|为iPyGIRS程序提供栅格数据文件的读写功能
PyMySQL|为iPyGIRS程序提供MySQL数据库的操作接口
joblib|为iPyGIRS程序提供大数据文件,内存数据磁盘缓存,保存至文件,并行计算功能
psutil|为iPyGIRS程序提供获取系统、电脑硬件信息的功能
scikit-learn|为iPyGIRS程序提供样本划分、特征选择、机器学习建模、训练、验证、测试、评估、绘制学习曲线等功能
PyQt5|QT5的Python封装,为iPyGIRS程序提供界面
### **(3)安装第三方Python包**
下载完所有第三方包后,使用“Installer-V0.2.1-Beta.exe”程序进行安装(**安装过程请确保电脑能够正常上网,因为虽然绝大多数第三方Python包已经下载到本地了,但部分第三方Python包仍须自行下载其它依赖包安装**)。该安装程序需要两个参数:
- 刚才所下载的第三方Python包的存放路径
- Python解释器的绝对路径(该Python解释器位于所下载的iPyGIRS程序文件中,相对路径为“./iPyGIRS-V0.2.0-Beta/python-3.7.5-embed-amd64/python.exe”)。

## **5. 使用说明**
执行完安装程序后,根目录下将生成“iPyGIRS-V0.2.1-Beta.bat”脚本文件,双击该文件即可运行程序。(由于是使用Windows cmd程序启动的iPyGIRS程序,因此,**除非你想退出程序,否则请勿关闭cmd黑色窗口**(可查看程序错误信息,未来的稳定版本,将会删除该窗口),这将导致程序被强制退出!)
1. 关于iPyGIRS的使用说明文档,可下载目录"./docs/iPyGIRS_V0.1.2_使用说明书.docx"中的word文档到本地查看,新版本(即v0.2.0)的使用说明书会在将来的推出。
2. 当前版本“V0.2.0”使用过程中,如遇到程序奔溃,闪退,卡死未响应等情况,会在cmd
窗口(黑色窗口)中显示错误信息,请将相应的截图和用到的数据的情况,一起截图或提交到Issues,或通过邮箱直接联系我(xingrui94@163.com)。
## **6. 版本规划**
iPyGIRS的版本规划如下表所示,详细的版本规划,请参考“./docs/开发日志与版本更新计划.md”。**准确的更新时间、版本更新内容、计划变更以下一个版本实际发布更新时的信息为准。**
版本|预计推出时间|主要更新内容
:-:|:-:|:-
v0.1.0|2019.02~2019.03|iPyGIRS软件的第一个版本V0.1.0,是在原的GPVC和WIIS基础上,重新设计系统,WIIS更名为“iPyGIRS”。程序UI沿用Test WIIS风格,依然采用经典的菜单栏、工具栏、状态栏、文件列表和主对话窗口的形式。实现了“样本创建”、“特征构建”、“特征选择”、“波段分离”、“波段融合”、“波段计算”、“STARFM图像融合”、“机器学习”——“回归模型”菜单下实现了多种机器学习回归算法
v0.1.1|2019.05|全新设计的主界面UI,程序完全工具箱的形式呈现,所有功能集成到树状工具箱中,以此将所有开发精力集中到功能完善与Bug修复中;删除了不是当前刚需的多个工具(功能)
v0.1.2|2019.05|主要修复上一版本中“像元值提取”工具Bug;图像的存储改为使用Python内置的有序字典(原为无序字典)
v0.2.0|2019.08~2019.10|“回归模型”统一合并为“scikit-learn机器学习工具”,具备了“回归”、“聚类”、"分类"三大常用功能,统一的机器学习GUI程序,使得机器学习的参数设置、训练、应用更加方便,实现或恢复了“MySQL数据库管理”、“发布WMS服务”、“应用方程”、“系统设置”、“波段计算”等工具
v0.2.1|2020.01|主要修复v0.2.0版本中存在的系列bug,优化机器学习工具
v0.3.0|2020.04~2020.05|该版本将会是一个比V0.1.0功能更丰富的、更稳定、更完善的版本。该版本极大地增强了表格数据类、栅格数据类的功能和稳定性。重构数据管理与发布模块,修复其中的问题。增加csv文件支持、图像融合、波段分离、合并、深度学习、机器学习模型测试等功能。增加帮助(可查阅帮助文档)、反馈、关于等功能
v0.3.1|2020.05~2020.06|优化机器学习工具等
v0.4.0|未定|机器学习可自动化多次训练、验证、测试。多进程技术加持,优化耗时的程序,增加程序后台处理功能。部分底层依赖修改。
v0.5.0|未定|重新设计程序主界面,具有更加丰富、漂亮的UI元素。增加表格数据显示、栅格数据显示功能,相应的操作面板上增加表格数据、栅格数据工具。增加文件格式转换功能(即csv、xlsx和hdf、tif、hdr的互相转换或单向转换功能)
v0.6.0|未定|增加表格数据、栅格数据的编辑、撤销、保存至文件、另存等功能
v0.7.0|未定|增加工具链功能,通过该功能,可拖到工具箱中的工具到面版,形成一个可定制的流程化工具集,底层依赖修改,API修改与优化
v0.1.0|未定|微调软件架构、程序数据存储方式和程序API,各方面设计趋于稳定