一种楼层内部路径网自动生成方法与流程

文档序号:15228150发布日期:2018-08-21 19:00阅读:273来源:国知局

本发明涉及矢量室内路径网自动生成领域,尤其涉及一种无趋边性的楼层内路径网自动生成方法。



背景技术:

随着社会的迅猛发展,城市中大型建筑物日益增多,这些建筑物结构复杂,很容易让置身其中的人产生“位置焦虑”,室内路径实时规划和导航的需求愈发突出。室内路径规划需要已知的室内行人通行网络,目前基于矢量建筑平面图自动构建室内行人通行网络的方法主要基于可视图法和门-门建模法,但这两类方法生成的路径均具有趋边性(路径贴墙),若以此为基础数据进行路径导航或虚拟漫游时将会产生因相机贴墙带来的视角失常问题,显著降低了导航和虚拟漫游的体验。并且,由于可视图法是在所有障碍物顶点之间生成路径,需要较大的存储空间。

综上所述,现有基于矢量建筑平面图生成室内路径网的方法主要存在如下技术问题:由于传统方法生成的路径具有趋边性导致室内导航和漫游的体验降低,要求克服该缺点,设计出无趋边性的、占用较低存储空间的室内通行网络自动生成方法。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种室内通行网络自动生成方法,该方法生成的路径具有无趋边性。

为了实现上述目的,本发明采用的技术方案为:一种楼层内部路径网自动生成方法,所述方法包括如下步骤:

计算所有房间多边形的抽象点rp;

计算所有房间的门点dp;

遍历所有房间,分别计算每个房间内门点至抽象点的路径、门点与门点之间的互联路径,得到每个房间的d-r路径、d-d路径;

将所有房间的d-r路径、d-d路径合并得到整个楼层的路径;

在计算d-r路径、d-d路径,若起点、终点之间不可视:

在计算d-r路径时,生成若干避开墙线的中间节点,门点与抽象点之间通过中间节点连接形成路径;

在计算d-d路径时,门点之间通过房间多边形抽象点绕行连接形成d-d路径;

房间多边形抽象点rp为位于房间多边形内部代表该房间的点。

计算得到的d-d路径、d-r路径以节点链的形式存储,每个房间的路径集包括d-d路径和d-r路径,以包含若干节点链的节点链列表的形式存储;

所有房间的d-r路径和d-d路径合并得到整个楼层的路径,将路径的节点链表转化为路径的无向带权图。

计算房间多边形抽象点包括如下步骤:

步骤1:根据房间多边形通过向量即法判断房间多边形的凸凹性,并统计凹顶点的数目;

步骤2:若判定房间多边形为凸多边形时,房间多边形抽象点rp为房间多边形的几何中心;

步骤3:若多边形有一个凹点且多边形顶点个数为奇数时先检索从凹点a出发分别沿顺逆时针两个方向经过相同顶点数之后至交汇点p,以线段pa的中点作为多边形的抽象点rp;

步骤4:若多边形有一个凹点,且多边形顶点个数为偶数时检索从凹点a出发沿顺逆时针两个方向经过相同顶点数之后构成交汇线段的两个端点p1和p2,然后取交汇线段p1p2的中点p与凹点a连线的中点作为房间多边形的抽象点rp;

步骤5:若房间多边形有两个凹点,且凹点a1、a2形成的线段中点位于房间多边形的内部,则线段a1a2的中点作为房间多边形的抽象点;

步骤6:若房间多边形有两个凹点,且凹点a1、a2形成的线段的中点位于房间多边形的边上或外部时,分别以a1为起点沿顺逆时针两个方向经过相同顶点数之后交汇于p1点、以a2为起点沿逆顺时针两个方向经过相同顶点数之后交汇于p2点,以p1、p2的连线的中点作为p点,以凹点a1、a2的中点为a点,线段pa的中点坐标作为房间多边形的抽象点;

步骤7:若房间多边形凹点个数大于两个时且凹点共线时,以相邻凹点组合构造成线段集,遍历线段集,分别计算线段集中线段的中点,以其中位于房间多边形内部的线段中点作为房间多边形的抽象点;

步骤8:若房间多边形凹点个数大于两个时且凹点不共线时,以全部凹点构造新的多边形,以该新多边形代替房间多边形返回步骤1迭代计算抽象点rp。

计算d-r路径的方法包括:

步骤1:遍历房间多边形对应门线集d,取门线任一点或门点中点作为相应门线的门点dp;

步骤2:判断门点与抽象点之间是否可视;

步骤3:若门点与抽象点之间可视,此时门点与该相应抽象点之间通过连接形成相对应的门点至抽象点之间的d-r路径;

步骤4、若门点与抽象点之间不可视,此时需生成中间节点以使门点和抽象点之间通过中间节点连接形成d-r路径,其中中间节点生成的方法包括:

步骤a:计算门点、抽象点连线与房间多边形的边线形成的交点集,该交点集除去门点后形成交点集ic,交点集中的交点个数为count;

步骤b:遍历交点集ic,检索距离门点最近的交点以及该交点对应所在房间多边形的边线dirs;

步骤c:过门点生成与边dirs平行的直线,并计算该直线与房间多边形的交点集ic2,并从交点集ic2中检索除门点以外距离门点最近的点p;

步骤d:在房间多边形的边线dirs的两个端点中,检索距离门点最近的点a1,然后计算出线段p-a1的中点n1;

步骤e:记录中点n1的位置;

步骤f:判断中点n1与房间多边形抽象点之间是否可视,若可视,则中间节点生成结束,以步骤e中记录的节点作为全部的中间节点;

若不可视,则将中点n1的位置赋予门点,更新门点的位置,并反馈步骤a。

d-r路径以节点链的形式存储,当门点和抽象点之间可视时,节点链包括仅

包括门点和抽象点;当门点和抽象点不可视时,节点链包括门点、中间节

点和抽象点。

计算d-d路径的方法包括:

遍历房间多边形对应门线集d以及门线条数dcount,若门线条数dcount小于2时,此时没有d-d路径;

若门线条数dcount≥2时,计算房间内两两门点之间形成的门点对集合;

对门点对集合内的每一门点对判断可视性,若门点对的两门点之间可视,则以该两门点生成d-d路径;

若门点对的两门点之间不可视,则以两门点以及房间多边形的抽象点生成d-d路径。

判断门点与门点之间或门点与抽象点之间是否可视的方法为:

计算两点之间形成的直线与房间多边形的交点,并在交点中除去该两点形成交点集,交点集中交点个数为零时,则该两点可视,否则该两点不可视。

节点链列表转换为无向带全图的方法包括:

1)创建顶点集

无向带权图的邻接矩阵存储结构使用一维数组存储顶点集,遍历节点链列表中的每一条节点链,将节点链上的各节点逐次添加到顶点数组中即可;

2)创建邻接矩阵

无向带权图的邻接矩阵存储结构使用矩阵存储节点之间的关系(边),设节点链列表包含的节点数为n,则对应的邻接矩阵为n×n阶方阵,由于节点链上的相邻节点即表示两节点之间可以直接到达,据此关系可确定矩阵中每一个元素的值;

3)权值计算

在使用邻接矩阵存储带权图时,矩阵的元素值即为权值;权值用于存储两节点之间的距离数据,该数据即为节点链上相邻节点之间的几何距离,由节点坐标计算得到。

本发明的优点在于:克服现有算法生成路径带有趋边性的问题,而且具有复杂度较低且采用算法实现时存储空间占用较小,采用该方法生成规划路线时可以提高导航和虚拟漫游的体验。

附图说明

下面对本发明说明书各幅附图表达的内容及图中的标记作简要说明:

图1为本发明实施例中多边形顶点数为奇数且有一个凹点时房间多边形示意图;

图2为本发明实施例中多边形有一个凹点且多边形顶点个数为偶数时房间多边形示意图;

图3为本发明实施例中房间多边形有两个凹点,且凹点连线形成的线段中点位于房间多边形的内部时房间多边形示意图;

图4为本发明实施例中房间多边形有两个凹点,且凹点连线形成的线段中点位于房间多边形的边界时房间多边形示意图;

图5为本发明实施例中房间多边形有多个凹点且凹点共线时房间多边形示意图;

图6为本发明实施例中房间多边形有多个凹点且凹点不共线时房间多边形示意图;

图7为本发明实施例中房间多边形原始门点、抽象点示意图;

图8为本发明实施例中房间多边形生成可视路径示意图;

图9为本发明实施例中房间多边形中间节点生成示意图;

图10为本发明生成的室内网络路径图;

图11本发明一种实施例中矢量建筑平面图;

图12为本发明建筑平面图生成门点、抽象点示意图;

图13为本发明建筑矢量平面图上中间节点和路径的生成示意图;

图14为本发明路径时意图;

图15为本发明无向带权图形式的室内路径网结果;

图16为采用现有技术的可视图法生成的室内网络路径示意图;

图17为现有技术采用门门建模法生成的室内路径示意图;

图18为本发明的路径生成方法生成的室内路径示意图。

具体实施方式

下面对照附图,通过对最优实施例的描述,对本发明的具体实施方式作进一步详细的说明。

本发明的室内通行网络自动生成方法,克服现有算法生成路径带有趋边性的问题。现有方法在生成路径时,若起终点之间互不通视,则使用墙线上的点作为中间节点,这是路径趋边性问题产生的根本原因。因此,本发明设计了一种全新的中间节点生成方法,当起终点之间互不通视时将自动生成若干中间节点插入到路径中,由于中间节点完全避开墙线要素,因此从根本上避免了路径趋边性问题。

另外,本发明生成的路径更加丰富和实用。现有方法基于门点生成路径,从房间a至房间b的路径规划结果实际上是从门点a至门点b的路径,由于门点可被相邻房间共享,房间没有唯一能够代表自身的路径节点,因此在实际应用中执行路径规划时将存在不确定性。鉴于此,本发明生成2类室内路径:门-门路径(doortodoor,d-d)和门-房间路径(doortoroom,dr),其中d-d路径代表门点之间的互联路径,d-r路径代表门点至房间抽象点之间的互联路径。在生成路径节点时,门点(doorpoint,dp)由门线中点计算;对于代表房间的抽象点(roompoint,rp),由于矢量建筑平面图中不含任何相关信息,为此本发明基于房间多边形的凹凸性设计了一种房间抽象点的求解算法,利用该算法计算得出的房间抽象点大致位于房间的中部,且该抽象点具有唯一性。

一种基于矢量建筑平面图的无趋边性室内路径网自动生成方法,该方法包括如下步骤:

计算所有房间多边形的抽象点rp;

计算所有房间所有门线的中点dp;

遍历所有房间,分别计算每个dp点至rp点的路径以及dp点之间的互联路径,得到每个房间的d-r路径和d-d路径。每一条路径以节点链的形式存储(list<point>)存储,每个房间的路径集(包括d-r路径和d-d路径)以包含若干节点链的节点链列表的形式存储(list<list<point>>);

将所有房间的d-r路径和d-d路径合并得到整个楼层的路径,并将该中间成果节点链列表(list<list<point>>)转换为无向带权图(关联矩阵形式),无向带权图即为本发明生成的最终室内路径网成果。

下面根据附图对本发明的关键步骤进行详细描述

1.1房间多边形rp点的求解算法

算法:房间多边形rp点的求解算法

输入:房间多边形polygon(n条边的简单多边形).

输出:功能区抽象点rp.

具体如下:

step1:利用向量积法判定polygon的凹凸性,并统计凹顶点的数目count。

step2:若count=0,即polygon为凸多边形,则rp取值于polygon的几何中心,其中xi、yi为polygon各顶点的坐标分量。

step3:若count=1且n%2=1,即一个凹点且多边形顶点数为奇数时,如图1所示,则先检索从凹点a出发沿顺逆时针两个方向经过相同顶点数之后交汇点p,交汇点p的具体计算方法是:设凹点a的索引号为m,则交汇点p的索引号index=(m+n/2)%n,多边形的顶点以数组的形式存储,某点的索引号即为该顶点在该数组中基于0的序号;再以线段pa的中点作为rp,xa、xp、ya、yp分别为a点、p点的坐标分量。

step4:若count=1且n%2=0,即一个凹点且多边形顶点数为偶数时,如图2所示,则检索从凹点出发沿顺逆时针两个方向经过相同顶点数之后构成交汇线段的两个端点p1和p2。实际上,如图2此时p1、p2为相同的点。设凹点a的索引号为m,则p1和p2的索引号分别为:然后取交汇线段p1p2的中点p与凹点a连线的中点作为rp,

step5:若count=2且线段a1a2的中点位于polygon的内部时即两个凹点且凹点连线中点位于多边形内部,如图3所示,则取线段a1a2的中点作为rp,

step6:若count=2且线段a1a2的中点位于polygon的边上或外部,即两个凹点且凹点连线中点位于多边形边界或外部,如图4所示,则分别以a1、a2为起点确定交汇点(同step3中的方法,即a1为起点沿顺(逆)方向经过相同顶点数之后交汇于p1点、以a2为起点沿逆(顺)时针方向经过相同顶点数之后交汇于p2点,以p1、p2的连线的中点作为p点,以凹点a1、a2的中点为a点,线段pa的中点坐标作为房间多边形的抽象点;),不论两交汇点是否重合,

step7:若count>2且所有凹点共线,即多个凹点且凹点共线,如图5所示,则以相邻凹点组合构造线段集sc,遍历sc计算出第一个线段中点位于polygon内部的点p。由于肯定存在中间间隔多边形空白区域的凹点对,故p点肯定存在,此时rp取值于p。

step8:若count>2且所有凹点不共线,如图6所示,则以凹点构造新多边形polygon2,并令polygon=polygon2,返回step1迭代计算点rp的坐标。

1.2室内路径网的生成方法

本发明中室内路径网由d-d路径和d-r路径构成。若起终点之间可视,无需生成中间节点;否则,对于d-r路径,如果门点(dp1)与功能区抽象点(rp)之间不可视,则需要生成中间节点(n1);对于d-d路径,若两门点之间不可视(dp1与dp2),则两门点可通过功能区抽象点(rp)绕行连接,此时不进行中间节点的生成,因为门点之间不可视的大部分情形是门点相距较远,此时功能区抽象点大致位于门点之间,两门点之间的路径可由各门点与功能区抽象点之间的路径组合得到,故没有必要再另行计算门点之间的中间节点。生成房间内部路径的算法如下:

算法:房间内部路径生成算法

输入:房间多边形polygon,房间多边形对应的门线集d

输出:包含多条路径节点链的列表routes(list<list<point>>)

具体如下:

step1:遍历d,对于每一门线d∈d,取其中点dp,然后为每个dp创建路径节点列表d_rpath(list<point>),并将dp作为dpath的第一项,d_rpath将包含从门点dp出发到达功能区抽象点rp的所有节点。

step2:计算直线dp-rp与polygon的交点集。由于门点是固有交点,故将其从交点集中剔除。设剔除门点后的交点集为ic,包含的交点个数为count。

step3:若count=0,如图7中线段dp3-rp,则表示点dp3与点rp之间可视,即门点与功能区特征点之间可以直接相互通达,此时无需生成中间节点,从点dp3出发至点rp的路径只需两个节点即可描述,因此需将点rp3添加进d_rpath:d_rpath={dp3,rp}。

step4:若count>0,如图8中线段dp1-rp,则表示dp1与rp之间不可视,即门点与功能区特征点之间存在障碍物,此时需要生成中间节点以使两点之间可以通过中间节点绕行抵达。中间节点的计算方法如下:①遍历交点集ic(ic={i1,i2,i3,i4,i5}),检索距离dp1最近的点i1,然后在polygon的边集中检索包含该点的边,设该边为dirs;②过点dp1生成与dirs平行的直线dp1-p,计算该直线与polygon的交点集ic2(ic2={dp1,p}),并从ic2中检索除门点dp1之外距离点dp1最近的点p;④在dirs的两个端点中检索距离dp1距离最近的点a1,然后计算线段p-a1的中点n1,n1即为中间节点。计算出中间节点n1之后,令dp=n1返回step2进行迭代计算,直到dp与rp之间可视时停止迭代。以门点dp1为起点的d-r路径为例,最终生成的d-r路径节点列表d_rpath={dp1,n1,rp}。

step5:设d包含的门线条数为dcount,若dcount<2,则表示功能区只有一扇门,无需生成d-d路径;若dcount≥2,则按如下方法生成d-d路径:①对d中的门线两两组合,并计算对应的门点得到门点对集合couple_dp,易知couple_dp包含的元素数目为即单个功能区多可生成条d-d路径;②遍历couple_dp,对每一门点对cdp∈couple_dp,使用step3中同样的方法测试cdp中两门点之间的可见性。若两门点之间可见,如图8中dp2和dp3,则创建d-d路径列表d-dpath并将dp1和dp2添加到列表中(顺序可颠倒):d_dpath={dp1,dp2};若两门点之间不可见,如图9中dp1和dp3,则不创建路径,两门点可通过rp点关联的路径绕行到达。

step6:将上述步骤中生成的所有路径节点列表(d_rpath和d_dpath)添加到routes,最终返回routes。上述说明中对生成路径的方法采用计算机存储形式方便本方法的实现。最终生成的图10的路径列表为存储形式为:

routes={{dp1,n1,rp},{dp2,n2,rp},{dp3,rp},{dp2,dp3}}

1.3路径成果(节点链列表)转换为无向带权图的方法

节点链列表是本发明为便于算法实现而设计的用来存储路径节点信息的中间数据结构,需要将其转化为存储路径信息的标准图结构。本文将节点链列表转换为关联矩阵表示的无向带权图,转化方法如下:

1)创建顶点集。无向带权图的邻接矩阵存储结构使用一维数组存储顶点集。因此,遍历节点链列表中的每一条节点链,将节点链上的各节点逐次添加到顶点数组中即可。

2)创建邻接矩阵。无向带权图的邻接矩阵存储结构使用矩阵存储节点之间的关系(边)。设节点链列表包含的节点数为n,则对应的邻接矩阵为n×n阶方阵。由于节点链上的相邻节点即表示两节点之间可以直接到达,据此关系可确定矩阵中每一个元素的值。

3)权值计算。在使用邻接矩阵存储带权图时,矩阵的元素值即为权值。在本文中,权值用于存储两节点之间的距离数据,该数据即为节点链上相邻节点之间的几何距离,可由节点坐标计算得到。对于无向带权图的转换:假设某个房间有2条路径,则对应2条节点链,分别为a1,a2,a3;b1,b2,b3,b4,这7个顶点构成无向带权图的顶点集;对于两条节点链,每条节点链上某一节点与紧邻的节点均具有连通关系,通过节点相邻性可以确定顶点集中哪些节点连通;对于权值,本专利使用直线距离表达,该值可直接通过顶点坐标计算。

下面以图11的房间多边形为例说明,具体包括如下步骤:

步骤1:遍历所有房间,依次计算每个房间的rp、dp点,其中rp点7个,dp点7个,计算结果如图12所示。

步骤2:遍历所有房间,首先计算每个房间的d-d路径,共生成8条d-d路径;然后计算d-r路径,在此过程中若dp与rp不通视(如图13中dp1与rp3),则将生成中间节点(图13中n2点),共生成2个中间节点,10条d-r路径,每一条路径为一个节点链,所有房间的所有节点链构成整个楼层的路径网——节点链列表。

步骤3:将节点链列表转换为无向带权图即为本发明方法得到的路径示意图,如图14所示,与之对应的关联矩阵如图15所示。

图16、17、18次展示了针对同一张矢量建筑平面图11分别采用可视图法、门-门建模法、本发明方法生成的室内路径网。从直观路网复杂度、存储空间占用、是否具有路径趋边性三个维度进行分析,

(1)路网复杂度

可见图法生成的路网最复杂,本发明方法次之,门-门建模法最简单;

(2)存储空间占用

可见图法、门-门建模法、本发明方法需要存储的路径节点个数分别为34、10、16,对应需要34、10、16阶关联矩阵进行存储,可视图法占用的存储空间最大,本发明方法次之,门-门建模法最小。这是因为可视图法的顶点取自障碍物顶点;本发明方法路径顶点取自门点、房间抽象点以及少量的中间节点;门-门建模法的路径节点取自门点和少量障碍物顶点,该顶点仅在两门点不通视时使用。一般情况下,室内障碍物的顶点数目要多余本发明生成的顶点数;

(3)趋边性

可视图法生成的趋边路径最多,因为可视图法的路径节点全部取自障碍物顶点,因此障碍物顶点之间的路径全部为趋边路径。图16中的所有墙线均是趋边路径;门-门建模法仅在两门点之间无法通视时生成趋边路径,一般情况,门-门建模法均会生成趋边路径;本发明方法无趋边路径,因为本发明在两点之间不通视时通过生成完全避开障碍物的中间节点,从根本上解决了路径趋边性问题。

显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种非实质性的改进,均在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1