GEOS库的学习之一:介绍和编译
对GEOS库的学习,源于一个项目:要在c++中判断二维平面中两个多边形的关系(无论凹凸)。也就是判断两个多边形是否相交、相容等。听起来很简单,可实现起来却比较难,而项目又催得紧。于是我去搜索了一下,看是否有相关的开源库,用于判断空间关系的。没想到还真有,比如:基于JAVA语言的JTS库,基于Javascript的openlayers库,以及基于c++的geos库等。
搜索了一下关于geos库的使用教程,以及官方示例文档,几乎为0。官方只有提供API文档,没有提供tutorial之类的东西,其它网友的教程更是没有,想学就得自己去学,去摸索。这要了亲命了!!只有自己慢慢去啃吧,好在不是太难。把自己所摸索的记录下来,便成了这些文字。自己摸索学习,难免会有很多错误,希望看见了的给予指正。
关于geos库的编译,其实很简单
我使用的是vs2012+geos3.50版本。
1. 下载geos-3.5.0,放在d:\geos350中
下载网站:http://trac.osgeo.org/geos/
2. 进入Visual Studio Tools下的VS2012 开发人员命令提示,本例为
C:\Program Files (x86)\Microsoft Visual Studio 11.0>
3、依次执行如下命令
>VCVARS32.BAT
>cd d:\geos350
>atuogen.bat
>nmake /f makefile.vc
>
编译成功后,会在d:\geos350/src目录下生成geos.lib, geos_i.lib, geos_c_i.lib, geos.dll, geos_c.dll等五个文件
接下来,在VS中新建项目后,需要进行配置,只需要三处地方:
第一处:属性--配置属性---c/c++---常规,添加附加包含目录d:/geos350/include
第二处:属性--配置属性---链接器---常规,附加库目录d:/geos350/src
第三处:属性--配置属性---链接器--输入,附加依赖项:geos_c_i.lib (依赖geos.lib会有“检测到RuntimeLibrary不匹配项”的错误,没找到原因)
配置完好,就可以写代码进行测试:
最简单的测试代码:
#include <iostream>
#include "geos.h"
using namespace std;
int main()
{
cout<<"GEOS库版本为:"<<GEOS_VERSION<<endl;
}
注意要引入geos.h头文件。复杂点的测试,可参考我的另一篇文章http://www.cnblogs.com/denny402/p/4965213.html
最后,运行完你的测试代码后,还需要将geos_c.dll复制到项目下的DEBUG目录下。
GEOS库的学习之一:介绍和编译的更多相关文章
- GEOS库的学习之二:简单几何图形的创建
几何图形(Geometry)是geos里面基本的操作对象,因此Geometry类就是最重要的一个类 几何图形中主要有三个要素:点,线,面.横纵坐标构成点,多个点构成线,环线构成面,点线面混合构成几何集 ...
- GEOS库 介绍 (转)
http://wiki.woodpecker.org.cn/moin/lilin/geos-introduce 介绍 GEOS是一个集合形状的拓扑关系操作实用库(可能这么说不太准确),简单得说,就是判 ...
- 使用VS2010编译64的Geos库
Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...
- GEOS库学习之五:与GDAL/OGR结合使用
要学习GEOS库,肯定绕不开地理方面的东西.如果需要判断的两个多边形或几何图形,不是自己创建的,而是来自shapefile文件,那就得将GEOS库和GDAL/OGR库结合使用了.实际上只需要OGR就行 ...
- GEOS库在windows中的编译和测试(vs2012)
版本:vs2012, geos3.5 一.下载和编译 这类的文章比较,不再具体细说,可以参考 http://blog.csdn.net/wangqinghao/article/details/8201 ...
- 自己在linux上编译、链接、动态库和静态库的学习笔记
在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...
- GEOS库的编译
下载地址https://trac.osgeo.org/geos/ 选择最新的geos-3.6.2版本,下载 将geos-3.6.2放在VS2012文件夹下,本例是D:\VS2012 打开VS2012开 ...
- 动态库与静态库的学习 博主写的很好 静态库 编译的时候 需要加上 static 动态库编译ok运行不成功就按照文章中的方法修改
来源连接 http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...
- zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板
前言 Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下. 版本编译引导 zlib在windows上的mingw32 ...
随机推荐
- Markdown 五分钟速成
为了加强后续 Wiki 开发效率,请编写人员使用规定工具按照规范进行文档的编写. Windows 用户推荐使用编辑器 MarkdownPad 下载地址:http://markdownpad.com M ...
- Volley源码分析(2)----ImageLoader
一:imageLoader 先来看看如何使用imageloader: public void showImg(View view){ ImageView imageView = (ImageView) ...
- Linux的文件权限
1 文件权限的表示 (1)字母表示法 Linux中所有文件(普通文件.目录文件.字符特殊文件.块特殊文件.管道或FIFO.符号链接.套接字)都有9个权限,如下图所示: -rw-rw-r--就是文件a的 ...
- SQL Server同步复制问题排查方法
1.应用复制的命令时在订阅服务器上找不到该行 解决方法:用系统存储过程sp_browsereplcmds(返回分发数据库中存储的可读版本复制命令的结果集,并将其用作诊断工具. 此存储过程在分发服务器上 ...
- ADO.NET Entity Framework,Code First简单示例
一.安装EntityFramework: 在vs里打开NuGet,在命令行里输入:Install-Package EntityFramework. 二.基本使用方法 1.建立数据模型 class St ...
- oracle序列
一.序列 序列是oracle用来生产一组等间隔的数值.序列是递增,而且连续的.oracle主键没有自增类型,所以一般使用序列产生的值作为某张表的主键,实现主键自增.序列的编号不是在插入记录的时候自动生 ...
- 关于CPU Cache:程序猿需要知道的那些
天下没有免费的午餐,本文转载于:http://cenalulu.github.io/linux/all-about-cpu-cache/ 先来看一张本文所有概念的一个思维导图: 为什么要有CPU Ca ...
- 浅谈Python时间模块
浅谈Python时间模块 今天简单总结了一下Python处理时间和日期方面的模块,主要就是datetime.time.calendar三个模块的使用.希望这篇文章对于学习Python的朋友们有所帮助 ...
- Json常用的转换
简单记录一下jquery里面的JSON.parse()和JSON.stringify()函数,和js中的eval()函数的用法 1,JSON.parse 函数(常用) 作用:将 JavaScript ...
- Ajax详解及其案例分析------如何获得Ajax对象,使用Ajax对象发送GET和POST请求,校验用户名,POST和GET请求时的乱码处理,实现级联的下拉列表
本节主要内容预览: 1 获得Ajax对象 2 使用Ajax对象发送GET请求 3 使用Ajax对象发送POST请求 4 使用Ajax校验用户名 5 POST请求时的乱码处理 6 GET请求时的乱码处理 ...