对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库的学习之一:介绍和编译的更多相关文章

  1. GEOS库的学习之二:简单几何图形的创建

    几何图形(Geometry)是geos里面基本的操作对象,因此Geometry类就是最重要的一个类 几何图形中主要有三个要素:点,线,面.横纵坐标构成点,多个点构成线,环线构成面,点线面混合构成几何集 ...

  2. GEOS库 介绍 (转)

    http://wiki.woodpecker.org.cn/moin/lilin/geos-introduce 介绍 GEOS是一个集合形状的拓扑关系操作实用库(可能这么说不太准确),简单得说,就是判 ...

  3. 使用VS2010编译64的Geos库

    Geos库在cmake中总是报错,所以我决定试试nmake编译64位的库.现将编译过程记录如下: 1.下载Geos,我下的是最新版3.5.0,地址在 http://trac.osgeo.org/geo ...

  4. GEOS库学习之五:与GDAL/OGR结合使用

    要学习GEOS库,肯定绕不开地理方面的东西.如果需要判断的两个多边形或几何图形,不是自己创建的,而是来自shapefile文件,那就得将GEOS库和GDAL/OGR库结合使用了.实际上只需要OGR就行 ...

  5. GEOS库在windows中的编译和测试(vs2012)

    版本:vs2012, geos3.5 一.下载和编译 这类的文章比较,不再具体细说,可以参考 http://blog.csdn.net/wangqinghao/article/details/8201 ...

  6. 自己在linux上编译、链接、动态库和静态库的学习笔记

    在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...

  7. GEOS库的编译

    下载地址https://trac.osgeo.org/geos/ 选择最新的geos-3.6.2版本,下载 将geos-3.6.2放在VS2012文件夹下,本例是D:\VS2012 打开VS2012开 ...

  8. 动态库与静态库的学习 博主写的很好 静态库 编译的时候 需要加上 static 动态库编译ok运行不成功就按照文章中的方法修改

    来源连接   http://www.cnblogs.com/skynet/p/3372855.html C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库 ...

  9. zlib开发笔记(四):zlib库介绍、编译windows vs2015x64版本和工程模板

    前言   Qt使用一些压缩解压功能,介绍过libzip库编译,本篇说明zlib库.需要用到zlib的msvc2015x64版本,编译一下.   版本编译引导 zlib在windows上的mingw32 ...

随机推荐

  1. iOS屏幕适配知识

    一.旋转处理    第一步:注册通知 [[NSNotificationCenter defaultCenter] addObserver:self                            ...

  2. 我的mac上的软件(以防优盘重装系统使用)

     

  3. JQuery怎么实现页面刷新后保留鼠标点击样式的方法

    今天抽空研究了下鼠标点击添加样式的方法.为了防止忘记,写篇文章算是备份吧. $('ul.main-menu li a').each(function(){     if($($(this))[0].h ...

  4. IDO分享 | 如何在centos下安装OpenCMS

    本次的opencms环境是在两台机器上搭建的. 一台服务器安装mySQL, 一台服务器安装jdk.tomcat.opencms.也可以将jdk.mySQL.tomcat.opencms安装在同一个机器 ...

  5. centos7.0 没有netstat 命令问题

    centos有时安装时,没有安装netstat命令: 直接如下就可搞定: yum install wget 运行  yum install net-tools  就OK了 netstat常用命令: n ...

  6. Windows Server 2012 R2下通过80端口访问Odoo ERP

    背景 Odoo 9.0系统,安装于Windows Server 2012R2,同时与IIS并存.Odoo自带web服务器,使用端口8069.因客户需要用80端口访问,因此需要进一步设置,且8069端口 ...

  7. android中实现view可以滑动的六种方法

    在android开发中,经常会遇到一个view需要它能够支持滑动的需求.今天就来总结实现其滑动的六种方法.其实每一种方法的 思路都是一样的,即:监听手势触摸的坐标来实现view坐标的变化,从而实现vi ...

  8. Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图

    现在的web项目,图片越来越多,图片大小也越来越大,随便就能达到1M,2M,甚至更大.用户上传的图片,一般是无法直接使用的.一般要生成两三种对应的缩略图,分别适配不同的终端,不同的场景.比如PC,手机 ...

  9. nginx 与 lua 开发环境搭建

    首先下载最新版的 相关软件 的安装文件. nginx: http://nginx.org/en/download.html LuaJIT: http://luajit.org/download.htm ...

  10. 关于Javascript中的复制

    在做项目时有一个需求,是需要复制内容到剪切板,因为有众多浏览器,所以要兼容性很重要 1.最简单的copy,只能在IE下使用 使用clipboardData方法 <script type=&quo ...