編譯GDAL支援PostgreSQL
GDAL編譯
學習GDAL,學會自己編譯GDAL是非常必要的(我是小白,哈哈)
1:預設GDAL編譯
1.1 原始碼下載
不管是採用nmake方式還是工程方式,都需要先下載原始碼,然後進行才能開始編譯。
解壓之後原始碼檔案如下所示:
1.2 直接下載別人編譯好的
直接下載別人編譯好的比較方便,但是這些編譯基本都是預設編譯(比方說,對postgis,mysql這些資料庫型別的驅動都是不支援的,如果要用到這些,還是需要自己編譯的,到底是直接下載別人編譯好的,還是自己編譯,根據自己實際情況選擇)
1.3 編譯(nmake)
1.3.1 VS命令提示符
利用VS的命令提示符來完成,我的是VS2015專業版,這裡選擇64位本機工具命令提示符(因為OS是Win10 64位)
1.3.2 開始編譯
cd 到解壓的原始碼資料夾,依次輸入
nmake -f makefile.vc
nmake -f makefile.vc install
nmake –f makefile.vc devinstall
然而很不幸,編譯沒有通過,出現了下列問題:
不慌,上面的問題應該屬於編譯64位GDAL時出現的問題,這裡提供兩種解決方案:
第一種加上WIN64=1,即像下面這樣就行:
第二種在原始碼中開啟namke.opt檔案,搜尋WIN64,找到下面部分,去掉前面#號:
ps:推薦使用第二種,不用每次都帶上WIN64=1.
等一段時間編譯完成之後,再次輸入剩下兩條命令:
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
1.3.3 編譯結果
到此,編譯(nmake版)已經成功,在C盤如下目錄(C:\warmerda\bld\bin)可以檢視到編譯結果(原始碼裡面也有編譯的結果gdal203.dll,但是其它exe沒有):
1.4 編譯(工程)
1.4.1 生成VS工程
執行命令提示符,cd到原始碼檔案,執行命令generate_vcxproj.bat 14.0 64 gdal-2.3.1
1.4.2 開始編譯
執行gdal-2.3.1.vcxproj,即可開啟VS工程,然後直接點選執行即可。
2 編譯Java版GDAL
GDAL是用C++寫的,如果在Java中需要用到GDAL,那麼我們就需要編譯Java版GDAL。
2.1 編譯前準備
2.1.1 準備內容
編譯Java版GDAL需要用到以下東西:JRE、SWIG、Ant,JRE當然就不用說了,在安裝JDK的時候大家肯定已經配置好了,這裡不再贅述。
2.1.2 SWIG
然後把swig.exe資料夾所在目錄(D:\SoftWare\SWIG\swigwin-3.0.12)新增到環境變數path中:
測試是否安裝成功,cmd中輸入swig,如果出現下面情況,則表明成功了:
2.1.3 Ant
2.1.4 修改namke.opt檔案
修改如下內容即可:
修改完成後如下所示:
2.2 開始編譯
編譯流程:參考1.3,先編譯c++版GDAL(即上面三個nmake命令),編譯完成之後,輸入命令:
cd swig (進入到swig資料夾)
nmake -f makefile.vc java (編譯Java版GDAL)
2.3 編譯結果
除了c盤輸出資料夾裡面的內容外,原始碼swig\java資料夾裡面也多了gdal.jar和gdalalljni.dll等檔案(這些檔案在GDAL環境搭建的時候會用到,當然還包括之前的gdal203.dll,肯定也是會用到的):
3 編譯GDAL支援PostGIS
GDAL不僅支援shp驅動,還支援PostGIS驅動,GDAL支援的向量驅動可以到這裡(https://www.gdal.org/ogr_formats.html)去看,但是預設的編譯結果是不支援PostGIS的,需要自己重新編譯,下面就詳細說明下,如何編譯GDAL使其支援PostGIS驅動。
3.1 修改nmake.opt檔案
在該檔案中找到PostGIS庫,修改包含目錄和庫目錄(到PostGIS安裝目錄底下去看)
修改完成後結果如下:
3.2 開始編譯
修改完成nmake.opt檔案之後,仿照前面編譯(nmake版本)的重新進行編譯即可(我用的是Java版本的GDAL,所以按照2中步驟即可編譯,獲取到支援PostGIS的GDAL)。
3.3 編譯完成
編譯完成之後,可以利用depends,開啟gdal203.dll可以檢視到其中的依賴項中包含libpq.dll,則表明編譯成功了。