原理上一篇已经介绍过了,这篇就直接进行程序练习

#include "geos.h"

GeometryFactory factory;

//创建一条环线,与线的区别就是环线是闭合的。即第一个点和最后一点重合
LinearRing* createGeosRing(double x,double y,double offset)
{
CoordinateArraySequenceFactory csf;
CoordinateSequence* cs = csf.create(,);
cs->setAt(Coordinate(x,y),);
cs->setAt(Coordinate(x,y+offset),);
cs->setAt(Coordinate(x+offset,y+offset),);
cs->setAt(Coordinate(x+*offset,y+*offset),);
cs->setAt(Coordinate(x+*offset,y),);
cs->setAt(Coordinate(x,y),); //与第一个点相等
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); //如果多边形中间没有孔洞,第二个参数设为NULL
return poly;
} int main()
{
Polygon *p1=createGeosPolygon(,,); //创建第一个多边形 for(int i=;i<=;i++)
{
cout<<i<<": ";
Polygon *p2=createGeosPolygon(,,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;
else
cout<<*im<<endl;
}
}
system("pause");
return ;
}

结果如下:

最新文章

  1. 转:MYSQL连接字符串参数解析(解释)
  2. 对Java中正则表达式的一些理解
  3. JS实现验证码倒计时效果
  4. ahjesus 捕获entity framework生成的sql语句
  5. SU Demos-03T-F Analysis-01Sugabor
  6. Maven仓库的理解及配置
  7. iOS - UITextView
  8. php运行步骤解析
  9. UVA 11078 Open Credit System(扫描 维护最大值)
  10. BZOJ 1600: [Usaco2008 Oct]建造栅栏
  11. Fatal error in launcher:Unable to create process using &#39;&quot;&#39;
  12. 【docker简易笔记】docker基础信息的分享
  13. C语言实现快速翻转数组的顺序
  14. [c/c++] programming之路(30)、位运算(一)
  15. C++入门程序作业2
  16. HTML常用标签及属性
  17. 附9 elasticsearch-curator + Linux定时任务
  18. HP管理工具System Management Homepage安装配置
  19. 第五篇:Hadoop流
  20. css - 文字元素等的美化效果代码汇总(更新中...)

热门文章

  1. Java集合 之 Queue集合
  2. linux命令----网络地址
  3. Chrome 控制台 console
  4. Beeline known issues
  5. 如何在nopcommerce3.3注册页面添加密码强度检查仪?
  6. 本地Git仓库与Github远程仓库同步
  7. 翻译《Writing Idiomatic Python》(一):if语句、for循环
  8. HDU 3667 费用流(拆边)
  9. 利用jquery来进行表单的多向提交
  10. redis 一二事 - 设置过期时间,以文件夹形式展示key显示缓存数据