ERROR 6: GEOS support not enabled.

要学习GEOS库,肯定绕不开地理方面的东西。如果需要判断的两个多边形或几何图形,不是自己创建的,而是来自shapefile文件,那就得将GEOS库和GDAL/OGR库结合使用了。实际上只需要OGR就行了,但OGR和GDAL是放在一起的。OGR库用来读取和输出shapefile(shp)文件,geos库用来判断空间关系。

需要注意的地方:OGR里面的几何图形类OGRGeometry和GOES里面的类Geometry基本上是一样的,函数也大体相同。OGRGeometry类里面也有类似于Disjoint(),Touches(),Overlaps()这样的函数。但是这些函数是花架子,没有GEOS库的支持是用不成的。如果只有OGR库而没有GEOS库,运行这些函数就会提示GEOS support not enabled.这样的错误,也得不到正确的结果。

在OGR的官方文档中,对Overlaps()函数有这样一句话描述:This method is built on the GEOS library, check it for the definition of the geometry operation. If OGR is built without the GEOS library, this method will always fail, issuing a CPLE_NotSupported error.

大致意思就是这个函数是建立在GEOS库的基础上,没有GEOS库的支持,这个函数运行会出错。

1、编译GEOS。参考http://www.cnblogs.com/denny402/p/4966558.html

2、编译GDAL. 参考http://www.cnblogs.com/sansan/p/3394636.html,注意要先编译GEOS,再编译GDAL,不然会提示找不到geos_c_i.lib这个库。

编译并设置好后,就可以开始代码测试了。

本例的数据及工具版本:

GDAL/OGR: 2.0.0

GEOS: 3.5.0

shp文件:中国国界和省界SHP文件 ,可点此下载

至于SHP文件的读取,可参考 http://www.cnblogs.com/denny402/p/4959867.html

测试代码:

复制代码
#include "stdafx.h"
#include <iostream>
#include "ogrsf_frmts.h"
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{GDALAllRegister();GDALDataset   *poDS;CPLSetConfigOption("SHAPE_ENCODING","");  //解决中文乱码问题//读取shp文件poDS = (GDALDataset*) GDALOpenEx("d:/shp/province.shp", GDAL_OF_VECTOR, NULL, NULL, NULL );if( poDS == NULL ){printf( "Open failed.\n%s" );exit( 1 );}OGRLayer  *poLayer;poLayer = poDS->GetLayer(0); //读取层poLayer->ResetReading();OGRFeature *poFeature1,*poFeature2,*poFeature3;poFeature1=poLayer->GetFeature(205); //四川省poFeature2=poLayer->GetFeature(0); //黑龙江省poFeature3=poLayer->GetFeature(66); //青海省OGRGeometry *p1=poFeature1->GetGeometryRef();OGRGeometry *p3=poFeature2->GetGeometryRef();OGRGeometry *p2=poFeature3->GetGeometryRef();cout<<p1->IsEmpty()<<endl   //图形是否为空<<p1->IsSimple()<<endl  //是否是单个几何图形<<p1->getGeometryType()<<endl   //几何图形的类型,polygon返回3<<p1->getGeometryName()<<endl   //几何图形的名称<<p1->getDimension()<<endl     //图形的维度<<p1->getCoordinateDimension()<<endl   //坐标的维度<<p1->getSpatialReference()<<endl;    //空间参考if(p2->Disjoint(p1))cout<<"不相交"<<endl;else{if(p2->Touches(p1))cout<<"接触"<<endl;else if(p2->Overlaps(p1))cout<<"部分重叠"<<endl;else if(p2->Contains(p1))cout<<"包含"<<endl;elsecout<<"unknown"<<endl;}system("pause");return 1;
}
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java面向对象(this关键字)

一.this的作用 1.this 相当于是指向当前对象本身 2.成员变量和局部变量同名问题 class Person {private int age;private String name;// 给姓名和年龄初始化的构造方法Person(String name, int age) {// 当需要访问成员变量是&#xff0c;只需要在成员变量前面加上this.即可th…

c语言float二进制输出代码_下面C语言中这十四大谜题,不看答案你能做出来吗?...

C语言领取福利资料前往文末领取本篇文章《C语言的谜题》展示了14个C语言的迷题以及答案&#xff0c;代码应该是足够清楚的&#xff0c;而且我也相信有相当的一些例子可能是我们日常工作可能会见得到的。通过这些迷题&#xff0c;希望你能更了解C语言。如果你不看答案&#xff0…

平台策略:从Portlet到OpenSocial小工具再到渐进式Web应用程序:最新技术

介绍 由于世界仍在Java的掌控之中&#xff0c;因此我们经常定义所谓的基于组件的平台 。 我在2000年的OpenUSS&#xff08;开放大学支持系统&#xff09;方面拥有这一经验。 当时我有一个想法&#xff0c;就是开发一个可以使用组件体系结构和J2EE技术​​&#xff08; OpenUSS …

webm文件怎么在手机上正常播放以及在电脑上转换为mp4格式!

webm是一个开放、免费的媒体文件格式。WebM影片格式是以Matroska&#xff08;即MKV&#xff09;容器格式为基础开发的新容器格式&#xff0c;里面包括了VP8影片轨和Ogg Vorbis音轨&#xff1b;其中Google将其拥有的VP8视频编码技术以类似BSD授权开源&#xff0c;而Ogg Vorbis本…

WKT介绍

WKT&#xff0c;是一种文本标记语言&#xff0c;用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式&#xff0c;亦即WKB(well-known binary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。 目录 1概念2几何对象…

DS树+图综合练习--构建邻接表

题目描述 已知一有向图&#xff0c;构建该图对应的邻接表。邻接表包含数组和单链表两种数据结构&#xff0c;其中每个数组元素也是单链表的头结点&#xff0c;数组元素包含两个属性&#xff0c;属性一是顶点编号info&#xff0c;属性二是指针域next指向与它相连的顶点信息。单…

mysql datetime 间隔,MySQL datetime默认时间间隔

Is it possible to add to a default time with NOW(), 10 minutes?Ive tried something like that:CREATE TABLE table1 (date DATETIME NOT NULL DEFAULT DATE_ADD(NOW(), INTERVAL 10 MINUTE));However, it doesnt work.解决方案I dont think you can do this.The DEFAULT …

golang mysql 崩溃_mysql连接问题,goruntime里执行总是出错,程序一直崩溃

初学golang&#xff0c;尝试写一个程序&#xff0c;但是在mysql操作时遇到了问题~看网上文章&#xff0c;推荐mysql直接创建一个db全局变量&#xff0c;然后连接一次&#xff0c;以后使用到直接用这个db&#xff0c;我按照这样的方法&#xff0c;然后进行操作&#xff0c;可是程…

牛客网——点菜问题

题目描述 北大网络实验室经常有活动需要叫外卖&#xff0c;但是每次叫外卖的报销经费的总额最大为C元&#xff0c;有N种菜可以点&#xff0c;经过长时间的点菜&#xff0c;网络实验室对于每种菜i都有一个量化的评价分数&#xff08;表示这个菜可口程度&#xff09;&#xff0c;…

OGR示例:写shp,求面与面的交和差操作

编译命令&#xff1a;g main.cpp -lgdal 调用命令&#xff1a;./a.out 输出shp名称 操作选项 注释&#xff1a;操作选项&#xff08;1&#xff1a;多边形A - 多边形B&#xff0c;2&#xff1a;B - A&#xff0c;3&#xff1a;A和B的交集部分&#xff09; #include "ogr…

Spring Boot和Thymeleaf:重新加载模板和静态资源,而无需重新启动应用程序

Thymeleaf是围绕自然模板的概念设计的&#xff0c;该模板允许进行静态原型制作&#xff1a;模板逻辑不会影响用作原型的模板。 尽管这是一项很棒的技术&#xff0c;但您可能还希望在运行的Spring Boot应用程序中查看结果&#xff0c;而不必每次更改Thymeleaf视图时都重新启动服…

写cookies注意事项

在调试模式下是无法写到cookie的&#xff0c;因为cookie需要写到域名下&#xff0c;并且需要写的域名和运行的域名一致才能写入。同样在读取cookie时也只能读取到当前域名的cookie&#xff0c;无法读取其他域名的cookie。 比如下面用jquery表示在baidu.com的域名下写入cookie&a…

mysql记录当前表数据的数据条数据类型_mysql的表的操作 数据类型

一 数据类型1 数字&#xff1a;整型&#xff1a;tinyint int bigint小数&#xff1a;float:在位数较短的情况下不精准double:在位数比较长的情况下不精准1 数字整型&#xff1a;tinyint int big小数&#xff1a;float:在位数比较短的情况下不精准double:在位数比较长的…

C++中的继承与虚函数各种概念

虚继承与一般继承 虚继承和一般的继承不同&#xff0c;一般的继承&#xff0c;在目前大多数的C编译器实现的对象模型中&#xff0c;派生类对象会直接包含基类对象的字段。而虚继承的情况&#xff0c;派生类对象不会直接包含基类对象的字段&#xff0c;而是通过一个间接的指针去…

中国科学院大学数学院本科生教材

中国科学院大学数学科学学院本科生教材&#xff08;不完全统计&#xff09; 注&#xff1a;不同的任课老师使用不太一样的教材&#xff0c;仅供参考。 一年级&#xff1a; 微积分I-A&#xff1a;《数学分析&#xff08;第4版&#xff09;》第1卷&#xff0c;卓里奇&#xff0c;…

sqlite mysql php_PHP实现的简单操作SQLite数据库类与用法示例

本文实例讲述了PHP实现的简单操作SQLite数据库类与用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;SQLite是一款轻型的数据库&#xff0c;是遵守ACID的关联式数据库管理系统&#xff0c;它的设计目标是嵌入式的&#xff0c;而且目前已经在很多嵌入式产品中使用了它…

Win7下WinDbg开启Local Kernel Debug调试

问题&#xff1a;在Win7 64bit系统中用管理员权限打开WinDbg开启Local Kernel Debug时报错&#xff1a; The system does not support local kernel debugging. Local kernel debugging requires Windows XP, Administrative privileges, and is not supported by WOW64. Only …

idea 不能及时编译_您是否能及时编译?

idea 不能及时编译还记得上次被C开发人员嘲笑的时候吗&#xff1f; Java如此繁琐&#xff0c;以至于他们甚至都不会考虑使用这种语言&#xff1f; 在许多方面&#xff0c;这一概念仍然成立。 但是对于典型的用法&#xff08;在大型企业的骨干中&#xff09;&#xff0c;Java性…

接口开发-导读

接下来的这个系列&#xff0c;完全针对“APP接口”开发进行&#xff0c;所以&#xff0c;希望你有一定的Java开发基础、以及一定的接口交互经验。 思来想去&#xff0c;决定按照下面的提纲进行 1. 基于SpringBoot创建基础框架&#xff1b; 2. 集成数据库操作&#xff08;mybati…

安装mysql显示有5.0_安装MySQL5.0时到如图这一步提示出错了,~

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…