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 ...
随机推荐
- [android] 手机卫士设置向导页面
设置向导页面,通过SharedPreferences来判断是否已经设置过了,跳转到不同的页面 自定义样式 在res/values/styles.xml中 添加节点<style name=””&g ...
- CGContextRef使用简要教程
CGContextRef使用简要教程 Graphics Context是图形上下文,也可以理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个 ...
- Scrum不是万能药,要在时机成熟时推行
敏捷很火热,大家都在谈敏捷:但不是所有团队都适合敏捷! 需要等待时机,时机成熟了,才推! 什么时候算时机成熟呢? 我们的经验是需要两点: 一.团队有三名或以上的研发工程师 : 二. 团队内有一名合适的 ...
- 怎样查看linux版本
玩一台新的linux服务器,首先要做的,就是先看下是什么版本的系统: 命令如下: 登录到linux执行cat /etc/redhat-release ,例如如下: [root@3.5.5Biz-46 ...
- Spring web.xml配置文件解析
概要解析
- 菜鸟程序员之Asp.net MVC Session过期异常的处理
小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动手也了很多代码.现在毕业了,他如愿的加入了T公司,开始了自己的程序员生涯.他信心满满,相信自己4年的学习到的东 ...
- Log4j配置与使用
log4j是Java社区事实上的日志标准解决方案.使用起来比较简单. 一. 简单使用 1.下载jar包放到lib文件夹,并加入到build path中: 2.编写log4j.properties文件, ...
- ubuntu创建、删除文件及文件夹方法
mkdir 目录名 => 创建一个目录 rmdir 空目录名 => 删除一个空目录 rm 文件名 文件名 => 删除一个文件或多个文件 rm –rf 非 ...
- 通过java的Runtime.getRuntime()和System.getProperties()来获取系统的信息
第一种,通过Runtime.getRuntime()来获取系统信息. 通过java来获取系统以下的信息: 主机名: OS 名称: OS 版本: OS 制造商: OS 配置: 独立工作站 ...
- MCS51系列单片机实用技术部分课件