GEOS庫在windows中的編譯和測試(vs2012)


版本: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;
}

結果:


免責聲明!

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



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