由於需要計算gis障礙物的緩衝區,所以研究了 一下geos庫的使用,將使用的一些細節內容記錄一下:
1、vs2010ide無法編譯較高版本的geos庫,較高版本的庫使用了更加高階的c++語法,如果想使用高版本的geos庫可能僅僅使用geos_c,這種用c介面的相對比較穩定,可以用較低版本的編譯器支援高版本的geos;
2、geos提供了geos的空間資料結構是參考ogc的****** features specification for sql(sfs),自己的開發類似的gis系統時候,資料結構應該參考這樣的結構,便於開發;
3、geos的中文文件很少,參考少數網上的**,加上開發文件和geos的測試用例能夠幫助快速了解geos的使用。
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,刪除這句話編譯就成功了。
geos編譯問題
gdal編譯geos的時候會用到geos c i.lib這個檔案,我用cmake編譯的時候僅僅產生geos c.lib這個檔案,所以只能使用nmake的編譯方式來編譯geos庫,nmake編譯geos的時候出現了很多問題,最終解決了這些問題,成功編譯了goes的win32 x64和debug rel...
GEOS庫學習之四 幾何關係判斷
include geos.h geometryfactory factory 建立一條環線,與線的區別就是環線是閉合的。即第乙個點和最後一點重合 linearring creategeosring double x,double y,double offset 建立乙個多邊形,如果多邊形內部沒有孔洞...
geos學習一 面的建立,與相交判斷
這個例子是摘自geo源 中乙個工程檔案,主要是學習會使用geos來建立面,以及面兩個面位置關係的判斷。具體的實現 如下所示。bug234.cpp 定義控制台應用程式的入口點。include stdafx.h include include geos geom geometryfactory.h in...