QGIS是当前较流行的开源跨平台的桌面GIS软件,它是基于跨平台的图形工具Qt软件包,采用C++ 语言开发的一个GIS软件。它支持的空间数据格式包括,Arcgis的shp文件,mssql空间数据库,oracle spatial,postgresql等,包括较多的空间分析插件,有较强的空间分析功能,是深入研究GIS的较好选择。对GIS开源项目进行学习,一方面可以提高自己的编程水平,另一方面也能在代码中增强对GIS的理解和认识。相比于对商业软件的二次开发,基于开源底层GIS的学习更有收获。(参看:http://www.cnblogs.com/wilsonLee/archive/2012/08/04/2623404.html)。
QGIS学习的第一步—编译QGIS源码
1首先在QGIS官网下载源码:地址:http://qgis.org/downloads/?C=M;O=A;下载最新的版本和先前版本编译的过程差不多,博主下载的是:qgis-2.4.0.tar.bz2;将源码解压到硬盘目录。
2安装cmake:地址:https://cmake.org/download/;下载安装cmake,博主下载的是cmake-3.5.1-win32-x86.msi,安装在win7 64位下没问题。
3安装Flex:Flex是一个自动的词法分析器生成器。下载地址:http://gnuwin32.sourceforge.net/downlinks/flex.php;
4安装Bison:Bison是属于 GNU项目的一个语法生成器生成器。下载地址:http://gnuwin32.sourceforge.net/downlinks/bison.php;
5下载OSGeo4W,地址:http://trac.osgeo.org/osgeo4w/;根据自己的机器选择64位或32位;
运行OSGeo4W下载相关的库。选择Advanced Install→Install from Internet设置根目录→设置本地目录(D:\OSGeo4W64)。下载以下库:
expat
fcgi
gdal
grass
gsl-devel
iconv
pyqt4
qt4-devel
qwt5-devel-qt4
sip
spatialite
libspatialindex-devel
python-qscintilla
6 cmake配置
运行cmake选择source code目录和build目录
点击Configure弹出一个配置对话框。选择Visual Studio 10(vs2010 64位)
点击configure下面会出现很多错误,文件类库的路径没有配置:
配置各路径可以参考下图:
其中有的路径不必配置,with根据需要选择,如博主要学习QGIS地图服务发布那块,所以配置了FCGI,一般不必添加。
配置直到configure配置成功为止,点击Generate生成代码。如下图:
7 VS2010编译QGIS
在编译前先完成以下工作
VS2010的Qt插件安装:地址:http://www.qt.io/download-open-source/,下载安装,(其中博主装的是qt-win-opensource-4.8.3-vs2010.exe)Qt的帮助文档也可以下载安装。
在“C:\GnuWin32\include”目录下复制“unistd.h”到"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include"目录下
复制“D:\OSGeo4W64\include\spatialite.h”替换“D:\OSGeo4W64\include\spatialite\spatialite.h”
打开qgis2.4.0.sln;设置模式为"RelWithDebInfo"设置项目中“链接器→命令行→其他项”删除“ /machine:X86”
编译项目:在此之前在系统环境变量path中加入D:\OSGeo4W64\bin;
按照项目依赖项依次编译:其中qgis依赖项包括:ZERO_CHECK,qgis_analysis,qgis_core,qgis_gui,需先编译依赖项。
编译需较长时间。。可能会出现问题,其中博主出现过编译项目是32位与目标机器不匹配的问题,原因是之前cmake配置时Qt_QMAKE_EXECUTABLE默认选的是之前安装Qt时的目录,该目录文件是32位的(我先装的Qt)。结果得重新配置cmake将目录改为OSGeo4W64,再生成代码。
运行成功生成的界面如下:
该界面中只包含基本的功能界面,QGIS的很多功能是以插件的形式,每个功能对应工程文件中的一个项目,可单独运行(相关依赖项先要编译完成)。