文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

在前一篇中,我们探讨了如何求凸多边形中的似最大圆,但是针对实际情况需求,我们并没有完全解决问题。实际情况中,凹凸多边形同时存在,并且在行政区划应用上,凹多边形更多。所以这里我们依然得探讨如何在任意多边形中得出其内部的似最大矩形或者似最大圆。

这里,我们将方向优先选择为求似最大矩形,原因有二:矩形的判断不涉及运算,效率更高;更重要的原因是,之后我们构建R树索引,基于矩形会更加便捷。

2.算法详解

在我之前的文章《网格索引判断点面关系的方法》(http://www.cnblogs.com/naaoveGIS/p/5148185.html),提到了GIS中常用的网格方法。同样,这里我将把该网格法的思路引入至算法中。

         

具体描述为:

a.获取任意多边形的四角坐标,通过四角坐标构造矩形,将该矩形划分成N*M个规则格网。

b.遍历所有格网,判断每个格网和多边形的包含关系。格网在多边形中,则标记为1,否则为0。

c.计算由0和1组成的矩形中,由1组成的最大矩形。

d.求得所得最大矩形代表的四角坐标,构造成真实地理矩形。

3.算法探讨

a.该算法最大的难点在于计算由0和1组成的矩形中,由1组成的最大矩形:

b.该算法获取的矩形是否为最大取决于网格的划分粒度,实际项目中,要进行综合考虑。实际上,只要能够逼近,是否最大不重要。

4.算法实现

5.问题扩展

昨天一个朋友问了一个相似的问题,项目背景为土地利用分析,需要提取任意规划土地内一平方公里的样本。

利用网格的思想,该问题同样能很好的解决。

                        -----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

         如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

                                      

一种求任意多边形内部水平方向似最大矩形的算法相关推荐

  1. 求任意多边形内部水平方向似最大矩形算法实现

    背景说明 前段时间有个求点是否在多边形内部的需求,折腾了不少时间,现截取其中的的重点部分--求任意多边形内部水平方向似最大矩形--来搞篇博客. 求点是否在多边形内部这个算法很容易搞,一搜一大把,但数据 ...

  2. 已知三个点坐标求 三角形面积 || 求任意多边形面积公式||判断点在直线的左侧还是右侧

    已知三个点坐标求 三角形面积 由A-->B-->C-->A 按逆时针方向转.(行列式书写要求) 设三角形的面积为S 则S=(1/2)*(下面行列式) |x1 y1 1| |x2 y2 ...

  3. hdoj-2036题解-向量积法求任意多边形面积

    首先看一道hdoj的算法题:hdoj-2036-改革春风吹满地 该题题意就是逆时针给出点的坐标,求这个多边形的面积.下面就写一下如何用向量积法求多边形面积. 向量积法与面积 上图说明了如何利用向量求得 ...

  4. 求任意多边形面积-有向面积

     给定多边形的顶点坐标(有序),让你来求这个多边形的面积,你会怎么做? 我们知道,任意多边形都可以分割为N个三角形,所以,如果以这为突破点,那么我们第一步就是把给定的多边形,分割为数个三角形,分别 ...

  5. PCL 任意多边形内部点云提取

    随机数 一.概述 二.代码 二.结果 一.概述   提取多边形内部的点. 二.代码 #include <iostream> #include <pcl/io/pcd_io.h> ...

  6. c++如何求任意多边形的面积

    由于项目需要,求解任意不规则多边形的面积 ,想了很久,也不知道怎么叙述,直接代码展示吧 #include <iostream> #include <vector> using ...

  7. 一种求凸多边形内部似最大圆的算法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.    背景 任意多边形内部一定有一个最大圆,但是如果我们将条件设定 ...

  8. python计算多边形的面积并保留两位小数_计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={, , ,...,, }.要求输 ...

  9. 计算任意多边形面积的Python实现

    最近需要实现一个计算非凸多边形面积的功能,需要输入是顺次排序的多边形顶点坐标,假设输入的多边形顶点是V={v0, v1, v2, -, vn-1},则多边形的边为E={<v0, v1>, ...

最新文章

  1. case when then else多个条件_SQL巡礼之CASE用法
  2. 云计算中心的实施技术
  3. SQL_MODE设置
  4. socket聊天室笔记
  5. 最常见的208道Java最新面试题及答案(一)
  6. VUE如何操作DOM
  7. Java和甜蜜的科学
  8. 前端学习(807):简单数据类型传参
  9. GRPC: 如何优雅关闭进程(graceful shutdown)
  10. 频率统计表用c语言_空间矢量脉宽调制建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)...
  11. .net core 调用c dll_C++ 调用C封装DLL库的两种方式
  12. 拼多多百亿补贴的iPhone 12来了 起售价5699元
  13. NodeJs——(8)http.ServerRequest的过程
  14. 关于TcpClient,Socket连接超时的几种处理方法
  15. MySql安全模式下修改root账号密码
  16. 网络蚂蚁的最基本原理nbsp;-nbsp;httpnbsp;1.1
  17. HOJ排队打水F601题解
  18. NXP JN5169 使用硬件 SPI 从机收发数据
  19. java基础学习备忘录
  20. 【全基因组关联分析GWAS专题1】——群体结构

热门文章

  1. H264分辨率解码概述
  2. java getselectedrow_Java swing(2)自己设计完善的独特功能图书管理系统,获取下拉框等的文字内容等...
  3. java stringtoarray_java中toArray()的用法
  4. 【Java】练习题:三角形法则
  5. 【新星计划】MATLAB系统辨识工具箱使用方法
  6. python gui打包exe pyinstaller打包运行失败 Failed to execute script pyi_rth_multiprocessing
  7. centos 推荐使用epel源
  8. 使用 Eclipse Memory Analyzer 进行堆转储文件分析
  9. Tomcat8源码编译及导入Eclipse中研究
  10. HTML 标签 参考手册