一种基于地物散乱点逐点增加的轮廓构建算法
【技术领域】
[0001] 本发明涉及一种基于地物散乱点逐点增加的轮廓构建算法,属于地理信息科学领 域。
【背景技术】
[0002] 在分析一个地区建筑物分布特性时,工程师们可以测量出该地区地物稀疏形状 点,所谓地物的形状点是指地物的地面轮廓区域中带有明显转折的边角点,可以设定一个 基准坐标系,借助一些传统的手段(如皮尺)测量出这些边角点的坐标值。然而,这样的形状 点往往是稀疏的,因此,不能简单地认为距离相近的形状点的连线构成了地物的一个轮廓 边缘。对于地物稀疏形状点,如果其凸包包含了所有的稀疏形状点,此时,这种封闭的连线 方案是唯一的,但事实上,地物(例如建筑物)地面区域的轮廓往往构成的是凹多边形,封闭 连线方案并不唯一,因此,必须在满足要求的情况下搜索出最佳凹多边形。这个问题类似于 TSP问题(Travelling Salesman Problem),TSP问题最简单的求解方法是枚举法,对于η个 节点,TSP枚举算法的时间复杂度为0(η!),很明显,这种爆炸性增长的时间复杂度使得人们 必须寻求时间更佳的算法,所以TSP问题大多集中在启发式解法,然而启发式搜索算法有着 许多不足,例如,许多参数的设定要依据经验,速度相对较慢,并且对于大规模的数据点,遗 传算法的结果并不可靠。
【发明内容】
[0003] 发明目的:针对上述现有技术,一种基于地物散乱点逐点增加的轮廓构建算法,快 速准确的得到地物轮廓。
[0004] 技术方案:一种基于地物散乱点逐点增加的轮廓构建算法,包括以下步骤:
[0005] S1,将测量得到的η个地物稀疏形状点依次存储在大小为η的容器vector中,η个稀 疏形状点依次占据容器的η个位置,将η个地物稀疏形状点依次标号为Ρ1,Ρ2, ··+!!,相邻稀 疏形状点相连则形成地物轮廓的一种封闭多边形方案,其中η大于3;
[0006] S2,初始迭代次数i = 0,并初始最佳准则函数值乙以^ = inf,inf根据经验值设 定;
[0007] S3,随机化η个地物稀疏形状点在容器vector的位置;
[0008] S4,将随机化后容器vector中位置为1、2、3的三个地物稀疏形状点取出,并将其存 储在大小为η的新容器vector_new中前三个位置,所述三个地物稀疏形状点连接成一个封 闭的三角形;
[0009] S5,依次从容器vector中取出第4至第η个地物稀疏形状点,对于第X个地物稀疏形 状点,采用插入式加点法并依据贪婪算法将其加入前x-1个地物稀疏形状点构成的封闭多 边形中,并将该地物稀疏形状点保存在新容器ve Ct〇r_neW中相应位置;
[0010]遍历第4至第η个地物稀疏形状点后,计算出当前η个地物稀疏形状点构成的封闭 多边形的准则函数值J,若J〈 J_b e s t,则更新J_b e s t = J;
[0011] S6,返回步骤S3,进行迭代计算,若本次迭代计算得到的封闭多边形的准则函数值 小于J_best,则更新J_best =本次迭代计算得到的封闭多边形的准则函数值;当η个地物稀 疏形状点构成的封闭多边形的准则函数值均保持不变时,结束迭代计算,并根据此时新容 器vec tor_new中η个地物稀疏形状点的顺序绘制得到地物轮廓。
[0012] 进一步的,所述步骤S5中,对于第X个地物稀疏形状点,采用插入式加点法并依据 贪婪算法将其加入前x-1个地物稀疏形状点构成的封闭多边形中的具体方法为:
[0013] 设当前要插入点为ρ,将点ρ逐次插入前χ-1个地物稀疏形状点之后的每个位置,并 计算每次插入后形成封闭多边形的准则函数值,准则函数最小的那次插入位置为点ρ的最 终插入位置。
[0014] 进一步的,所述步骤S5中,如果多边形出现自相交时,其准则函数值即为inf,否则 多边形的准则函数值为
,θ,为多边形中两相邻边向量的夹角集合。
[0015] 有益效果:本发明的一种基于地物散乱点逐点增加的轮廓构建算法,通过逐点增 加的方法生成地物轮廓,经过多轮迭代增点,快速准确的搜索出较佳的封闭连线方案,形成 地物的轮廓区域;克服了现有搜索中枚举算法的时间爆炸性膨胀以及遗传算法的不可靠的 缺陷。并且通过设置的准则函数克服了多边形自相交的可能,可以保证多边形接近于建筑 物实际地面区域,从而可以对一定区域建筑物或者推广到任意规则形状进行统计分析。
【附图说明】
[0016] 图1为本发明方法的流程示意图;
[0017] 图2为容器中存储的点与对应的多边形关系图;
[0018]图3为一轮插入操作示意图;
[0019] 图4为相邻向量间-的夹角;
[0020] 图5为封闭多边形的角度;
[0021] 图6为插入操作出现相交的情形;
[0022]图7为准则函数对比示意图;
[0023] 图8为时间对比示意图。
【具体实施方式】
[0024] 下面将结合附图对本发明作进一步描述。
[0025] 如图1所示,一种基于地物散乱点逐点增加的轮廓构建算法,包括以下步骤:
[0026] S1,将测量得到的η个地物稀疏形状点依次存储在大小为η的容器vector中,η个稀 疏形状点依次占据容器的η个位置,将η个地物稀疏形状点依次标号为Ρ1,Ρ2, ··+!!,相邻稀 疏形状点相连则形成地物轮廓的一种封闭多边形方案。
[0027] S2,初始迭代次数i = 0,并初始最佳准则函数值乙以^ = inf,inf根据经验值设 定,一般可设为1〇6。
[0028] S3,随机化η个地物稀疏形状点在容器vector的位置。若一共有5个稀疏形状点,其 在容器vector的原始位置若为pi,p2,p3,p4,p5,现采用一种随机算法,使得顺序随机化为 另一种顺序,例如可能成为p3,pl,p2,p5,p4。
[0029] S4,将随机化后容器vector中位置为1、2、3的三个地物稀疏形状点取出,并将其存 储在大小为η的新容器vector_new中前三个位置,三个地物稀疏形状点连接成一个封闭的 三角形。如果n〈3,则提醒"稀疏点过少,无法构成封闭多边形";如果n = 3,则返回该封闭三 角形,结束程序。
[0030] S5,依次从容器vector中取出第4至第η个地物稀疏形状点,对于每一个点,尝试将 其加入原先的多边形中,即对于第X个地物稀疏形状点,采用插入式加点法并依据贪婪算法 将其加入前x-1个地物稀疏形状点构成的封闭多边形中,并将该地物稀疏形状点保存在新 容器vector_new中相应位置。
[0031 ]其中,对于第X个地物稀疏形状点,采用插入式加点法并依据贪婪算法将其加入前 x-1个地物稀疏形状点构成的封闭多边形中的具体方法为:
[0032] 设当前要插入点为p,将点p逐次插入前x-1个地物稀疏形状点之后的每个位置,并 计算每次插入后形成封闭多边形的准则函数值,准则函数最小的那次插入位置为点p的最 终插入位置。
[0033] 以图2、图3所示为例,若当前要插入点p为从容器vector中取出第6个地物稀疏形 状点P6,前5个地物稀疏形状点形成的最佳多边形如图2所示,其在新容器 vect〇r_neW中的 存储位置依次为?1,?2,?3,?4,?5;现要插入第六个点?6,如图3所示为第一次插入,即将点 P6插入点pi和p2之间,然后计算插入之后新多边形的准则函数值,即计算新多边形 plp