1. 程式人生 > >編譯GDAL支援PostgreSQL

編譯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,則表明編譯成功了。

4 參考文獻