原理在前面的章节已经介绍过了,这篇就直接进行程序练习:

#include "geos.h"GeometryFactory factory;//创建一条环线,与线的区别就是环线是闭合的。即第一个点和最后一点重合
LinearRing* createGeosRing(double x,double y,double offset)
{CoordinateArraySequenceFactory csf; CoordinateSequence* cs = csf.create(6,2);cs->setAt(Coordinate(x,y),0);cs->setAt(Coordinate(x,y+offset),1);cs->setAt(Coordinate(x+offset,y+offset),2);cs->setAt(Coordinate(x+2*offset,y+2*offset),3);cs->setAt(Coordinate(x+2*offset,y),4);cs->setAt(Coordinate(x,y),5); //与第一个点相等LinearRing *lr=factory.createLinearRing(cs);return lr;
}//创建一个多边形,如果多边形内部没有孔洞实际上与环线是一样的
Polygon* createGeosPolygon(double x,double y,double offset)
{LinearRing *lr=createGeosRing(x,y,offset);Polygon *poly=factory.createPolygon(lr,NULL); //如果多边形中间没有孔洞,第二个参数设为NULLreturn poly;
}int main()
{Polygon *p1=createGeosPolygon(12,12,5); //创建第一个多边形for(int i=0;i<=20;i++){cout<<i<<":   ";Polygon *p2=createGeosPolygon(0,0,i); //创建第二个多边形IntersectionMatrix *im=p2->relate(p1);cout<<*im<<"    ";    //返回DE-9IM交叉矩阵if(p2->disjoint(p1))cout<<"不相交"<<endl;else{if(p2->touches(p1))cout<<"接触"<<endl;else if(p2->overlaps(p1))cout<<"部分重叠"<<endl;else if(p2->covers(p1))cout<<"覆盖"<<endl;elsecout<<*im<<endl;}}system("pause");return 1;
}

结果如下:

【GEOS】GEOS库学习之几何关系判断相关推荐

  1. muduo网络库学习(四)事件驱动循环EventLoop

    muduo的设计采用高并发服务器框架中的one loop per thread模式,即一个线程一个事件循环. 这里的loop,其实就是muduo中的EventLoop,所以到目前为止,不管是Polle ...

  2. POCO C++库学习和分析 -- 序

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  3. 深度学习的几何观点:1流形分布定律、2学习能力的上限。附顾险峰教授简历(长文慎入,公号回复“深度学习流形分布”可下载PDF资料)

    深度学习的几何观点:1流形分布定律.2学习能力的上限.附顾险峰教授简历(长文慎入,公号回复"深度学习流形分布"可下载PDF资料) 原创: 顾险峰 数据简化DataSimp 今天 数 ...

  4. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  5. Point Cloud Library(PCL开源库)学习一

    一.PCL库简介(包含下载与配置方法) 点云库(PCL)是一个开源算法库,用于点云处理任务和3D几何处理.该库包含用于点云滤波.特征点估计.表面重建.3D配准.模型拟合.对象识别.分割和可视化的算法. ...

  6. poco,c++库学习,日期和时间

     POCO C++库学习和分析 -- 日期与时间 在Poco库中,与时间和日期相关的一些类,其内部实现是非常简单的.看相关文档时,比较有意思的倒是历史上的不同时间表示法. 1. 系统时间函数    ...

  7. 【Python之pymysql库学习】一、分析fetchone()、fetchmany()、fetchall()(保姆级图文+实现代码)

    目录 实现效果 实现思路 实现代码 总结 欢迎关注 『Python之pymysql库学习』 系列,持续更新中 欢迎关注 『Python之pymysql库学习』 系列,持续更新中 实现效果 实现思路 其 ...

  8. POCO C++库学习和分析 -- 字符编码

    POCO C++库学习和分析 -- 字符编码 1. 字符编码 1.1 字符编码的概念 字符编码可以理解为在计算机上语言符号和二比特数之间的映射.不同的编码方式对应着不同映射方法,对于映射集的双方而言, ...

  9. Python三方库之:psutil库学习

    Python三方库之:psutil库学习 1.描述 psutil(python system and process utilities)可以直接获取计算机CPU,内存,磁盘,网络等资源使用情况,可以 ...

最新文章

  1. 李宏毅机器学习自己的笔记(一)----------Introduction of MachineLearning
  2. 入门经典综述!深度人脸识别算法串讲
  3. controller是什么意思_光谈理论有什么意思,附源码带大家实操SpringBoot
  4. TCP/IP***原理分析总结
  5. 【游戏开发备注之二】配置Xcode版本控制SVN详细步骤内含部分问题解决方案
  6. 不懂就问,我月薪三千,离用lamer开mini还有多远?
  7. Objective-C 2.0 with Cocoa Foundation --- 3,类的声明和定义
  8. SQL Server2008创建约束图解 唯一性约束
  9. JVM教程:JM内存分哪几个区,每个区的作用是什么?
  10. CVPR 2020放榜,录取率降至22%,港中文周博磊发文感慨十年变迁
  11. 英伟达驱动更新记录_英伟达GeForce显卡驱动411.63版更新内容
  12. 入侵检测系统的原理与应用
  13. 人生是一场旅程,重要的不是终点,是自己路上的风景
  14. Pitfall of OO Programming
  15. Selenium+iframe准确定位元素
  16. 太平洋电信首批通过SD-WAN Ready 2.0服务认证
  17. dismiss和remove_dismiss是什么意思_dismiss在线翻译_英语_读音_用法_例句_海词词典
  18. 计算机网络学习笔记:多路复用(频分多路复用、时分多路复用、波分多路复用、码分多路复用)
  19. 代码的坏味道之七 :Feature Envy(依恋情结)
  20. twitter和新浪微博--比较

热门文章

  1. Qt_OpenCV_VS2013配置方法
  2. Revit二次开发——自动生成构件图(总结)
  3. kubernetes集群内部DNS解析原理
  4. BECKHOFF IPC/PLC BST 备份恢复U盘制作教程(非官方U盘)
  5. 《Android Studio应用开发实战详解》——导读
  6. android u盘读写权限,Android 外部SD卡/U盘无法写入解决方法(需要root)
  7. 贪吃蛇游戏设计准备(实验准备)
  8. 两年融资 280 亿,美国的新造车势力又行了?
  9. 常用SQL语句(笔记)
  10. 计算机网络中的电路交换的优缺点,计算机基础知识:电路交换的概述及优缺点...