GEOS庫的學習之一:介紹和編譯


對GEOS庫的學習,源於一個項目:要在c++中判斷二維平面中兩個多邊形的關系(無論凹凸)。也就是判斷兩個多邊形是否相交、相容等。聽起來很簡單,可實現起來卻比較難,而項目又催得緊。於是我去搜索了一下,看是否有相關的開源庫,用於判斷空間關系的。沒想到還真有,比如:基於JAVA語言的JTS庫,基於Javascript的openlayers庫,以及基於c++的geos庫等。

搜索了一下關於geos庫的使用教程,以及官方示例文檔,幾乎為0。官方只有提供API文檔,沒有提供tutorial之類的東西,其它網友的教程更是沒有,想學就得自己去學,去摸索。這要了親命了!!只有自己慢慢去啃吧,好在不是太難。把自己所摸索的記錄下來,便成了這些文字。自己摸索學習,難免會有很多錯誤,希望看見了的給予指正。

關於geos庫的編譯,其實很簡單

我使用的是vs2012+geos3.50版本。

1. 下載geos-3.5.0,放在d:\geos350中

     下載網站:http://trac.osgeo.org/geos/

2. 進入Visual Studio Tools下的VS2012 開發人員命令提示,本例為

  C:\Program Files (x86)\Microsoft Visual Studio 11.0>

3、依次執行如下命令

 

>VCVARS32.BAT
>cd d:\geos350
>atuogen.bat
>nmake /f makefile.vc
>

編譯成功后,會在d:\geos350/src目錄下生成geos.lib, geos_i.lib, geos_c_i.lib, geos.dll, geos_c.dll等五個文件

接下來,在VS中新建項目后,需要進行配置,只需要三處地方:

第一處:屬性--配置屬性---c/c++---常規,添加附加包含目錄d:/geos350/include

第二處:屬性--配置屬性---鏈接器---常規,附加庫目錄d:/geos350/src

第三處:屬性--配置屬性---鏈接器--輸入,附加依賴項:geos_c_i.lib  (依賴geos.lib會有“檢測到RuntimeLibrary不匹配項”的錯誤,沒找到原因)

配置完好,就可以寫代碼進行測試:

最簡單的測試代碼:

#include <iostream>
#include "geos.h"
using namespace std;
int main()
{
   cout<<"GEOS庫版本為:"<<GEOS_VERSION<<endl;
}

注意要引入geos.h頭文件。復雜點的測試,可參考我的另一篇文章http://www.cnblogs.com/denny402/p/4965213.html

最后,運行完你的測試代碼后,還需要將geos_c.dll復制到項目下的DEBUG目錄下。

 


免責聲明!

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



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