版本:vs2012, geos3.5
一、下載和編譯
這類的文章比較,不再具體細說,可以參考 http://blog.csdn.net/wangqinghao/article/details/8201319
我的軟件保存目錄是d:/geos350/,編譯成功后,會在d:/geos350/src目錄下生成一個geos_c_i.lib庫。
在VS中新建項目后,需要進行配置,只需要三處地方:
第一處:屬性--配置屬性---c/c++---常規,添加附加包含目錄d:/geos350/include
第二處:屬性--配置屬性---鏈接器---常規,附加庫目錄d:/geos350/src
第三處:屬性--配置屬性---鏈接器--輸入,附加依賴項:geos_c_i.lib
二、測試
先添加頭文件: #include "geos.h"
void test(); string str(bool flag); int main(int argc,char *argv[]) { test(); system("pause"); return 1; } void test() { cout<<"GEOS庫版本為:"<<GEOS_VERSION<<endl; typedef Coordinate PT; GeometryFactory factory; CoordinateArraySequenceFactory csf; //構建第一個矩形p1 CoordinateSequence* cs1 = csf.create(5,2);//五個2維點,第三維度z始終為0 cs1->setAt(PT(0,0),0); cs1->setAt(PT(3,0),1); cs1->setAt(PT(3,3),2); cs1->setAt(PT(0,3),3); cs1->setAt(PT(0,0),4); //與第一個點相等,構成閉合 LinearRing* ring1 = factory.createLinearRing(cs1); //點構成線 Geometry* p1 = factory.createPolygon(ring1,NULL); //線構成面 CoordinateSequence* cs2 = csf.create(5,2); //構建一個四邊形p2 cs2->setAt(PT(2,2),0); cs2->setAt(PT(4,5),1); cs2->setAt(PT(5,5),2); cs2->setAt(PT(5,4),3); cs2->setAt(PT(2,2),4); LinearRing * ring2 = factory.createLinearRing(cs2); Geometry* p2 = (factory.createPolygon(ring2,NULL)); CoordinateSequence *cs3 = new CoordinateArraySequence(); //構建一個三角形p3 int xoffset=4,yoffset=4,side=2; cs3->add(PT(xoffset, yoffset)); cs3->add(PT(xoffset, yoffset+side)); cs3->add(PT(xoffset+side, yoffset+side)); cs3->add(PT(xoffset, yoffset)); LinearRing * ring3 = factory.createLinearRing(cs3); Geometry* p3 = (factory.createPolygon(ring3,NULL)); bool flag12=p1->intersects(p2); bool flag13=p1->intersects(p3); bool flag23=p2->intersects(p3); cout<<"圖1與圖2:"<<str(flag12)<<endl; cout<<"圖1與圖3:"<<str(flag13)<<endl; cout<<"圖2與圖3:"<<str(flag23)<<endl; } string str(bool flag) { string result=(flag==true)?"相交":"不相交"; return result; }
結果:

