zoukankan      html  css  js  c++  java
  • 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;
    }

    结果:

  • 相关阅读:
    jquery遍历table的tr获取td的值
    Java判断文件、文件夹是否存在
    项目搭建系列之三:SpringMVC框架下使用Ehcache对象、数据缓存
    J2EE课程设计:在线书店管理系统
    项目搭建系列之二:SpringMVC框架下配置MyBatis
    使用Git(msysgit)和TortoiseGit上传代码到GitHub
    安卓课程设计:微课表
    项目搭建系列之一:使用Maven搭建SpringMVC项目
    常用markdown语法
    [转]优秀程序员应该做的几件事
  • 原文地址:https://www.cnblogs.com/denny402/p/4965213.html
Copyright © 2011-2022 走看看