一个比 ArcGIS Pro 和 SuperMap 还要好的自研算法【【一种快速等面积分割平面简单多边形的算法】的复刻实现及其与 ArcGIS Pro、SuperMap 的对比】

一个比 ArcGIS Pro 和 SuperMap 还要好的自研算法【【一种快速等面积分割平面简单多边形的算法】的复刻实现及其与 ArcGIS Pro、SuperMap 的对比】

一、算法、原理

一、本文算法是基于论文《一种快速等面积分割平面简单多边形的算法》的解析、复刻与代码实现

在这里插入图片描述

二、该算法的用处

多边形分割是 GIS 空间分析的重要组成部分,在 GIS 中应用频繁,如基本农田保护区的定积分割以及农村土地确权中按面积比例划分地块等。对平面图形的面积进行定量分析和分割是相关研究中常遇到的 ,因此,研究高效率、高精度、普适性强的多边形面积分割算法具有重要意义。

三、同类型算法及其特点

目前多边形分割算法包括微元积分法、二分位移迭代法 、中点二分迭代法、多边形随机分割算法、基于多边形内部点集的等面积分割算法等。

微元积分法即先在多边形范围内生成由正多边形要素构成的镶嵌(tessellation)网格,然后累计相邻或连通的小网格面积,在满足分割面积的前提下合并网格,该算法的效率和精度低。

二分位移迭代法和中点二分迭代法均采用二分法和迭代法思想(只是确定分割线的方法不同),难以保证最后分割出的多边形的面积精度,且前者应用于宽窄差异较大的多边形时,可能会引起分割线不与最小面积外包矩形(MinimumAreaBoundingRectangle,MABR)相交的问题,而后者处理效率较低,且参考的分割方向线由人工输入,存在主观随意性。

多边形随机分割算法(分割线存在随机性)适用于模拟自然变化过程,基于多边形内部点集的等面积分割算法依赖于给定的点集,两种算法均不能满足统一方向的分割。

四、本文算法

提出一种由粗到精的层次分割简单多边形算法(Algorithm of Hierarchical Decomposition of Simple Polygon,AHDSP),通过提高分块分割精度、确保分割线与最小面积外包矩形相交等策略,提高算法的实用性、计算效率及面积分割精度。

五、本文算法原理与过程 总的流程

本文实现平面简单多边形等面积自动分割的算法流程为:

1、输入初始数据,包括平面简单多边形O、多边形分割的块数N及每个多边形的分割精度δ(用户要求的面积误差限值);

2、通过计算多边形的最小面积外包矩形 MABR,确定多边形的分割方向;

3、根据分割块数对 MABR 进行等面积划分,以获取第一条分割线,并用该分割线对多边形进行粗略分割;

4、将上一步分割出的左多边形面积和目标分块面积(理论上分割出的多边形面积)的差值与设定的分割精度值(δ / N )相比较,

若前者小于等于后者,则输出分割的左右多边形(若右多边形需要分割,则继续分割),

若前者大于后者,则调整分割线的位置并重新分割,

直到满足设定的分割精度要求为止;

5、根据多边形旋转角度将分割出的多边形旋转至原始多边形位置。

六、本文算法原理与过程 总的流程示意图

在这里插入图片描述

七、本文算法的原理与过程详细描述

1、MABR 计算

根据格式塔(完形)原理,当图形对称或均衡时较稳定和美观。为满足这一审美需求,分割出的多边形应尽可能接近正方形或圆形,即要求分割出的多边形紧致性(用与当前多边形等面积的圆的周长与当前多边形周长之比表示)高。为使分割出的多边形趋于正方形或圆形(而非长条形),本文先计算出多边形的主方向,以主方向的垂直方向作为分割方向进行分割。

本文利用MABR计算主方向,方法为:首先围绕多边形的质心顺次旋转,每次旋转角度为 α (本文 α取1 ),则旋转的最大次数为int[360/α](int[]为取整函数),计算每次的最小外包矩形(MBR)面积,选择面积最小且矩形宽度(横向距离)大于高度的MBR作为原

多边形的MABR。记录旋转后的多边形及旋转角度。

如下图所示,P为原始多边形,P′为MABR对应的旋转后的多边形,β为旋转的角度,实线矩形表示 MBR,虚线矩形表示P′的MABR,则MABR的长边方向即为P′的主方向(水平方向), MABR 的短边方向(竖直方向)即为多边形的分割方向。

在这里插入图片描述

2、基于 MABR 等分线的粗分割

粗分割是指利用分割线对多边形进行初始分

割。在计算出主方向为水平方向的 MABR(下图 )

后,为方便计算,先对旋转至该位置的多边形(下图P′ )进行分割,然后将分割出的多边形再旋转至原

始多边形(下图 P)的位置。

在这里插入图片描述

在已知分割块数 N 的前提下,计算出每条 MABR 长边上的N - 1个距离等分点,将下、上长边中具有相同 x 坐标值的等分点连成线段(下图中 MABR 边界线上的 U1 和D1 两点具有相同的 x 坐标值),可将 MABR 划分为 N 个等面积网格。理想状态下(如待分割的多边形为矩形),多边形的面积会均匀地分布在 N 个网格中。基于此,为了合理确定初始分割线,对于任意多边形,将 MABR 中自左向右的首个等分点的连线作为初始分割线,对多边形进行粗略分割,如右图所示,N = 4, D1U1 为初始分割线,填充斜线的区域为分割出的右多边形。

在这里插入图片描述

3、基于平移分割线的精分割

精分割是在粗分割结果不满足分割精度的情况下,反复调整分割线的位置,并用新位置处的分割线对多边形进行分割,直到满足分割精度要求为止。

多边形精分割过程如下图所示,其中 D1′U1′ 为最终调整后的分割线,多边形 P′ 的空白区域为精分割出的第一个多边形,填充斜线的区域为分割出的右多边形。根据新分割线进行多边形分割,最终分割出的多边形面积误差会缩小至 δ / N 以内。

在这里插入图片描述

八、本文算法的原理与过程的简单描述

1 、MABR 计算(即:求出最小面积的包围盒,以最长边为分割方向)

不断旋转多边形,计算每个角度的包围盒,进行面积比较以及包围盒长度和高度比较,当且仅当面积最小且长度比高度大时,则为 MABR。

在这里插入图片描述

2、基于 MABR 等分线的粗分割(即:根据矩形包围盒,根据长边距离先等分 N 块)

计算长边距离,得到每块距离: d = length / N,满足 d 的距离的第一条线段 D1U1 作为粗分割的第一条线,开始进行分割。

在这里插入图片描述

3、基于平移分割线的精分割(即:调整粗分割的线,使得分割的块满足面积及面积误差要求)

计算此时分割的左侧的 P 这个块的面积,比较是否满足分割面积及面积误差,不满足则不断移动 D1U1,面积小了则 D1U1 往右移,面积大了则 U1D1 往左侧移动,直至调整到满足分割面积及面积误差,得到准确的分割线。然后对于右侧的剩余面继续进行重复操作,一块一块分割,直至分割完毕。

在这里插入图片描述

二、效果、演示

一、算法的复刻及落地实现演示过程效果

1、成比例面积分割(每块面积相等)

如 面积为10,分为 4 块,则每块面积为2.5

成比例面积分割

2、相等面积分割(前几块面积均为指定面积,最后一块面积为剩余面积)

如:总面积为 10,指定每块面积为 3,则前三块面积都为 3,最后一块为 1

相等面积分割

一、算法的复刻及落地实现直接计算结果效果

1、成比例面积分割(每块面积相等)和 相等面积分割(前几块面积均为指定面积,最后一块面积为剩余面积)

成比例面积分割和相等面积分割

2、相等宽度分割(每块宽度相等)和 指定宽度分割(前几块宽度均为指定宽度,最后一块宽度为剩余宽度)

相等宽度分割和指定宽度分割

三、与 ArcGIS Pro 和 SuperMap 的比较及优势

一、相较于 ArcGIS Pro 的优势

1、成比例面积分割

ArcGIS Pro 分割方向有限制

ArcGIS 成比例面积分割

自研算法支持任意方向

自研成比例面积分割

2、相等面积分割

ArcGIS Pro 输入分割面积后,分割块数需要手动输入合理块数且分割方向有限

ArcGIS 相等面积分割

自研算法输入分割面积后,自动计算正确分割的块数,且支持任意方向

自研相等面积分割

3、相等宽度分割和指定宽度分割

ArcGIS Pro 分割方向有限,指定宽度分割的块数需要手动输入

ArcGIS 相等宽度指定宽度分割

自研算法指定宽度输入宽度后,自动计算正确分割的块数,且支持任意方向

自研相等宽度指定宽度分割

二、相较于 SuperMap 的优势

SuperMap 不支持地理坐标系且只支持 按面积分割和按块数分割 两种。

自研算法支持按面积分割(相等面积、指定面积)、按块分割、按宽度分割(相等宽度、指定宽度)

在这里插入图片描述

三、相较于 ArcGIS Pro 和 SuerMap 的优势

在这里插入图片描述

四、完整演示效果

完整演示效果

Guess you like

Origin blog.csdn.net/yinweimumu/article/details/132165175