1. 程式人生 > >關於基於GDAL庫QT軟件平臺下C++語言開發使用說明

關於基於GDAL庫QT軟件平臺下C++語言開發使用說明

開發環境 用戶 寫入 imp 測試 windows系統 x64 href mage

背景前提

  地理空間數據抽象庫(GDAL)是一個用於讀取和編寫柵格和矢量地理空間數據格式的計算機軟件庫,由開源地理空間基金會在許可的X / MIT風格免費軟件許可下發布。 作為一個庫,它為調用應用程序提供了一個抽象數據模型,用於所有支持的格式。 它還可以構建有各種有用的命令行接口實用程序,用於數據轉換和處理。 PROJ.4庫支持投影和轉換。(摘自維基百科)

  相關的OGR庫(OGR Simple Features Library [2])是GDAL源代碼樹的一部分,它為簡單的特征矢量圖形數據提供了類似的功能。(摘自維基百科)

  GDAL庫在使用前可以進行源碼編譯,編譯環境由用戶所要進行後期的開發環境所決定,一般情況下,Windows系統下和Linux系統下所編譯出來的GDAL庫文件是不一樣的,不僅如此,對於C++語言來說,不同編譯器下的編譯出來的GDAL庫文件也是不一樣的,例如QT所采用的MinGW編譯器和VS的MSVC編譯器所編譯出來Windows系統下的GDAL庫文件不通用(本人親測,確實如此),所以不同的開發環境,不同的開發平臺(IDE),不同的編譯器,這都會影響前期的GDAL庫源碼的編譯,再加上GDAL庫本身又支持多種擴展庫,以及多種語言下的二次編譯,不同的用戶有不同的擴展需求,所以針對GDAL庫的復雜需求,配置不同的編譯環境,編譯出來的GDAL庫文件也是各式各樣,這可能也是開源地理空間基金會的GDAL / OGR項目管理委員會之所以進行開源的原因。

適用環境(開發)

  這裏主要介紹前期隨筆中所提到的基於GDAL庫所適用的開發環境,以及是如何使用的,當然這裏只是做一下簡要的總結,至於具體的函數使用,以及庫文件的編譯,推薦大家可以去買一本李民錄老師的《GDAL庫源碼剖析與開發指南》(說明:不是打廣告,我也沒收李老師一分錢,這裏只是出於對初學者的一個建議)。

  本文GDAL庫所采用的是QT軟件平臺下的MSVC 2017 x64編譯器進行編譯,編譯出來的庫文件也只能用於Windows系統下QT(MSVC)軟件平臺進行開發。編譯過程中為了支持.nc等NetCDF類型文件的讀取與寫入,以及包括高斯投影在內的大部分投影功能,特地加入了netCDF(4.6.2)和proj4(4.9.3)庫文件進行聯合編譯,編譯出來以後經過測試,可以正常使用。

使用方法

  這裏只介紹基於Qt軟件下MSVC編譯器進行GDAL庫使用環境的配置。編譯後的文件主要有三個:GDAL232、netCDF_462、proj493

技術分享圖片

  每一個文件夾內部都包含各自庫本身所具有的bin文件、include文件、lib文件,bin文件主要是Windows程序運行時與系統進行交互的運行環境文件,lib是程序進行編譯時的庫文件,include文件是編寫時的聲明文件。下面主要說一下如何進行配置。

  首先進行系統環境變量的配置,環境變量的配置方法自行百度,只不過內容不一樣,配置的變量名稱為系統環境下的Path變量(PS:很多人初學者曾經問過我,為什麽不在用戶環境變量中的Path裏面配置,這個我做一點解釋,就是用戶環境變量與系統環境變量的區別,用戶環境變量裏面的內容只有該用戶登陸Windows系統進行使用時才有效,其他用戶沒有,但是系統環境變量就區別於這一點,它是所有用戶都生效),具體配置結果如下:

技術分享圖片

  配置完環境變量完成以後進行測試一下,打開cmd命令行,輸入gdalinfo命令,如果顯示如下

技術分享圖片

  則說明配置成功,如果不是,則失敗,檢查相關錯誤。配置成功以後再進行編譯環境的配置,打開Qt軟件,新建Qt項目,右擊項目名稱,導入外部庫文件,選擇GDAL庫lib文件夾中的.lib文件,選擇完成後,如下圖所示:

技術分享圖片

  點擊確定以後,.pro文件中多處這幾行文字表示添加成功,具體如下圖所示:

技術分享圖片

  同樣的步驟將netCDF庫和proj4庫同樣添加進來,添加的lib文件分別是netcdf.lib,proj_i.lib和proj.lib三個文件。添加以後的內容如下:

技術分享圖片

  添加完成以後,即可進行代碼的書寫開發。具體開發步驟和內容參考上文所說的《GDAL庫源碼剖析與開發指南》一書,或者去查看李民錄老師相關博文(博文主頁:https://blog.csdn.net/liminlu0314)。

結束語

  本文主要是針對前期所發博文中所采用的庫文件的前提介紹,也是對之前博文的補充說明,與此同時,為了擴大方便大家的使用,此處公開我之前項目文件中所使用的GDAL庫文件,下載連接:https://files.cnblogs.com/files/thyou/GDAL.7z,希望對相關讀者有一定的幫助。本文中所采用的GDAL庫及擴展庫所采用的源碼均為官網最新版編譯出來的,編譯時間為2018年9月20日。

致謝

  從一開始的啥也不懂,編譯庫文件,到擴展其他語言版本,再到現在C++與Java語言下GDAL庫的熟練使用,李老師以及相關的技術博主給予我分享了太多的經驗知識,雖然學習的道路中充滿荊棘,但是還是走過來了,這裏要衷心的感謝你們,謝謝!

關於基於GDAL庫QT軟件平臺下C++語言開發使用說明