QGIS編譯


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的很多功能是以插件的形式,每個功能對應工程文件中的一個項目,可單獨運行(相關依賴項先要編譯完成)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM