由於需要計算GIS障礙物的緩沖區,所以研究了 一下GEOS庫的使用,將使用的一些細節內容記錄一下:
1、vs2010IDE無法編譯較高版本的GEOS庫,較高版本的庫使用了更加高級的C++語法,如果想使用高版本的GEOS庫可能僅僅使用geos_c,這種用c接口的相對比較穩定,可以用較低版本的編譯器支持高版本的GEOS;
2、geos提供了GEOS的空間數據結構是參考OGC的Simple Features Specification for SQL(SFS),自己的開發類似的GIS系統時候,數據結構應該參考這樣的結構,便於開發;
3、geos的中文文檔很少,參考少數網上的代碼,加上開發文檔和GEOS的測試用例能夠幫助快速了解GEOS的使用。
下面是從網上搜集的GEOS的相關庫的細節(主要參考了博主https://blog.csdn.net/dongyesang/article/details/78979287)的內容:
1、GEOS的前身是JTS,JTS提供了全功能的,強大的空間操作和空間判斷。 后來PostGIS缺少一套完整的空間查詢操作,於是就將JTS移植成為C++版本,正式命名為GEOS。GEOS為開源庫,它包括了完整的空間查詢和一大部分空間操作,是從事圖形操作和GIS行業開發人員經常接觸的開發庫。較為知名的使用GEOS的GIS軟件就有QGIS,QGIS使用GEOS的c接口,c接口函數名稱不會經常發生更改,具有更多的穩定性。
2、geos的數據結構關系如下
3、geos有三個庫geos_c、geos-static、geos生成的動態庫不一樣,geos生成c++的動態庫,geos_c生成c的接口,geos-static生成靜態庫,根據需要使用想要的庫。
4、當我使用vs2010新建x64平台編譯geos項目的時候,因為是復制win32平台得到x64,編譯的時候有時候會出現 fatal error LNK1112: 模塊計算機類型“x64”與目標計算機類型“X86”沖突 這樣的錯誤,按照網上的解決辦法,在連接器->命令行->其它選項里面有 %(AdditionalOptions) /machine:X86 ,刪除這句話編譯就成功了。