文章目录
- 下载源码
- 编译
- 方式1
- 方式2
- 示例
- 在线API
参考:https://blog.csdn.net/weixin_39951988/article/details/102660387
下载源码
官方网站:GEOS
进入下载页面:Download and Build | GEOS,点击下载geos-3.14.1.tar.bz2。
编译
方式1
vs2022从【文件】-【打开】-【CMake】选择CMakeLists.txt,从而打开工程。生成了out文件夹里面有默认的编译结果。通过在vs中修改配置实现不同的编译需求。
例如dll位于目录out\build\x64-Debug\bin中,lib位于out\build\x64-Debug\lib中。
方式2
在源码上层目录创建一个build文件夹:
在build目录里面打开powershell,输入:
cmake ../geos-3.14.1 -G "Visual Studio 17 2022" -A x64 -DBUILD_SHARED_LIBS=ON除了使用VS2022打开build/GEOS.sln工程编译项目,还可以打开x64 Native Tools Command Prompt for VS 2022,然后输入命令:
msbuild GEOS.sln /p:Configuration=Release /p:Platform=x64msbuild未配置未全局命令,所以只能局部使用。
编译结果在build/bin/Release目录。
geos.dll是c++ API
geos_c.dll是c API
符号库在build/lib/Release目录。
示例
创建控制台项目。
添加头文件目录:geos-3.14.1\include。
添加附加库目录,即上述geos.lib所在目录。
添加附加依赖项:geos.lib。
将geos.dll复制到exe所在目录。
示例代码:
使用的Release模式,与上述编译的Release模式的dll和lib相匹配。
也可以使用Debug模式,并使用Debug模式编译的dll和lib。
#include"geos.h"#include<iostream>#include<geos/io/WKTReader.h>#include<geos/io/WKTWriter.h>usinggeos::geom::Geometry;usinggeos::geom::GeometryFactory;usinggeos::io::WKTReader;usinggeos::io::WKTWriter;intmain(){//计算两个点的距离Coordinatec1(10,20);Coordinatec2(20,10);std::cout<<"distance = "<<c1.distance(c2)<<std::endl;//解析wkt为几何GeometryFactory::Ptr factory=GeometryFactory::create();WKTReaderreader(*factory);std::stringwkt_a("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))");std::stringwkt_b("POLYGON((5 5, 15 5, 15 15, 5 15, 5 5))");autog=reader.read(wkt_a);std::unique_ptr<Geometry>geom_a(reader.read(wkt_a));std::unique_ptr<Geometry>geom_b(reader.read(wkt_b));std::unique_ptr<Geometry>inter=geom_a->intersection(geom_b.get());WKTWriter writer;writer.setTrim(true);std::string inter_wkt=writer.write(inter.get());std::cout<<"Geometry A: "<<wkt_a<<std::endl;std::cout<<"Geometry B: "<<wkt_b<<std::endl;std::cout<<"Intersection(A, B): "<<inter_wkt<<std::endl;std::cout<<"Hello World!\n";}在线API
https://libgeos.org/doxygen/hierarchy.html