发明内容
本发明实施例所要解决的技术问题在于,提供一种基于建筑图纸的楼梯自动识别方法,能够提高建筑对象楼梯的识别效率及识别精度。
为了解决上述技术问题,本发明实施例提供了一种基于建筑图纸的楼梯自动识别方法,包括以下步骤:
读取楼梯所在图层的信息以获取所述楼梯所在图层中所有线段的端点的坐标数据;
根据所有所述线段的端点的坐标数据分别找出组成每一个梯段的端点的坐标数据对应写入一个梯段点集;
找出所有梯段中分别表示同一个楼梯的梯段;
读取柱所在图层、墙所在图层以及门和窗所在图层的信息以获取所有所述图层中所有图元的属性信息以及端点的坐标数据;
根据每一组表示同一个楼梯的梯段找出所有所述图元的端点中组成楼梯的梯间的端点的坐标数据对应写入一个梯间点集;
根据每一个楼梯的梯段以及楼梯的梯间确定楼梯的走向,并获得梯段的高程数据;
根据每一个楼梯的梯段以及楼梯的梯间找出组成楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集;其中,N>1;
根据每一个楼梯的梯段的高程数据获得楼梯的梯段平台的高程数据;
将每一个所述梯段点集中的所有端点加入对应的高程数据生成梯段三角形点集并输出,将每一个所述梯间点集中的所有端点按找出的顺序依次连接成的封闭线段作为梯间轮廓线输出,将每一个所述梯段平台点集中的所有端点加入对应的高程数据生成梯段平台三角形点集并输出。
由于建筑图纸中所有楼梯的梯间都是由柱、墙、门和窗等包围组成,因此,本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法是以识别后的柱、墙、门和窗为基础对楼梯的梯间进行识别。
所有的梯段三角形点集、梯间轮廓线和梯段平台三角形点集为本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的识别结果,而通过基于建筑图纸的楼梯自动识别方法处理得到所有的梯段三角形点集中的端点、梯间轮廓线的端点和梯段平台三角形点集中的端点的坐标数据以用于建筑对象楼梯的三维建模。
与现有技术相比,本发明实施例提供了一种基于建筑图纸的楼梯自动识别方法,通过读取楼梯所在图层的信息识别出每一个梯段点集;根据识别出的所有梯段找出分别表示同一个楼梯的梯段;通过读取柱所在图层、墙所在图层以及门和窗所在图层的信息识别出每一个梯间点集;根据每一个楼梯的梯段以及梯间确定楼梯的走向,获得梯段的高程数据,并识别出每一个梯段平台点集以及获得梯段平台的高程数据;将每一个梯段点集加入对应的高程数据生成相应的梯段三角形点集并输出,根据每一个梯间点集生成相应的梯间轮廓线并输出以及将每一个梯段平台点集加入对应的高程数据生成相应的梯段平台三角形点集并输出;可以解决现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象楼梯的识别效率及识别精度。
进一步地,所述根据所有所述线段的端点的坐标数据分别找出组成每一个梯段的端点的坐标数据对应写入一个梯段点集,对于每一个梯段,具体包括:
根据所有所述线段的端点的坐标数据找出所有所述线段中表示所述梯段的线段;
根据表示所述梯段的线段的端点的坐标数据找出组成所述梯段的端点的坐标数据对应写入所述梯段点集。
进一步地,所述根据所有所述线段的端点的坐标数据找出所有所述线段中表示所述梯段的线段,具体包括:
找出所有所述线段中相互平行、长度差小于预设的长度阈值且相邻线段的间距小于预设的间距阈值的M条线段;其中,M>3;
判断所述M条线段的起点和终点是否分别在同一条线段上;
当所述M条线段的起点和终点分别在同一条线段上时,所述M条线段为表示所述梯段的线段。
进一步地,所述根据表示所述梯段的线段的端点的坐标数据找出组成所述梯段的端点的坐标数据对应写入所述梯段点集,具体包括:
判断表示所述梯段的线段是否平行于X轴;
当表示所述梯段的线段平行于X轴时,找出表示所述梯段的线段的端点中纵坐标最小和纵坐标最大的端点所在的线段,并将找出的线段的端点的坐标数据写入所述梯段点集;
当表示所述梯段的线段不平行于X轴时,找出表示所述梯段的线段的端点中横坐标最小和横坐标最大的端点所在的线段,并将找出的线段的端点的坐标数据写入所述梯段点集。
进一步地,所述找出所有梯段中分别表示同一个楼梯的梯段,具体包括:
读取扶手所在图层的信息以获取所述扶手所在图层中所有扶手图元的属性信息以及端点的坐标数据;
分别找出所有梯段中与同一个所述扶手图元相连的梯段;其中,与同一个所述扶手图元相连的梯段为表示同一个楼梯的梯段;
根据每一个所述扶手图元找出所有梯段中分别表示同一个楼梯的梯段。
进一步地,所述根据每一组表示同一个楼梯的梯段找出所有所述图元的端点中组成楼梯的梯间的端点的坐标数据对应写入一个梯间点集,对于每一个楼梯的梯间,具体包括:
S1501、分别以所述楼梯的每一个梯段的梯段点集中的端点为圆心,对应生成预设半径的圆形缓冲区,找出在圆形缓冲区内的所述楼梯与所有所述图元的所有交点;
S1502、找出所有所述交点中与圆心的距离最小的交点作为初始起点,并将所述初始起点的坐标数据写入所述梯间点集;
S1503、以所述初始起点为中心点,以与所述初始起点的距离最小的圆心所在的梯段的线段的另一个端点为辅助点,控制连接中心点和所述辅助点的线段绕中心点顺时针或逆时针旋转;
S1504、找出所述线段旋转角度最小或最大时与所述线段重合且与中心点相连的线段,并将找出的线段的端点的坐标数据写入所述梯间点集;
S1505、判断当前写入所述梯间点集的所述端点是否为所述初始起点;
S1506、若当前写入所述梯间点集的所述端点不为所述初始起点,则以当前写入所述梯间点集的所述端点为中心点,控制连接中心点和前一个写入所述梯间点集的端点的线段绕中心点继续顺时针或逆时针旋转,并返回S1504;以及,
S1507、若当前写入所述梯间点集的所述端点为所述初始起点,则找出组成所述楼梯的梯间的端点的坐标数据对应写入所述梯间点集的过程结束。
进一步地,所述根据每一个楼梯的梯段以及楼梯的梯间确定楼梯的走向,并获得梯段的高程数据,对于每一个楼梯,具体包括:
找出所述楼梯的最底层梯间的门的门线;
分别计算表示所述楼梯的梯段的所有线段的中点到所述门线的中点的距离;
找出与所述门线的中点的距离最小的线段作为所述楼梯的起始线段;
根据所述楼梯的起始线段确定所述楼梯的走向;
根据所述楼梯的走向、所述楼梯所在楼层的地板的高程数据和墙的高程数据计算获得所述楼梯的梯段的高程数据。
进一步地,所述根据每一个楼梯的梯段以及楼梯的梯间找出组成楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集,对于每一个楼梯,具体包括:
判断所述楼梯的同一个梯间内包括几个梯段;
当所述楼梯的同一个梯间内包括一个梯段时,进行单梯段的楼梯平台识别处理;
当所述楼梯的同一个梯间内包括至少两个梯段时,进行多梯段的楼梯平台识别处理。
进一步地,所述当所述楼梯的同一个梯间内包括一个梯段时,进行单梯段的楼梯平台识别处理,具体包括:
找出所述单梯段的距离最大的两条线段;
分别将找出的两条线段的两端延长至与所述梯间相交,并求出四个交点;
根据求出的四个交点以及所述梯间的梯间点集找出组成所述楼梯的2个梯段平台的端点的坐标数据分别对应写入2个梯段平台点集。
进一步地,所述当所述楼梯的同一个梯间内包括至少两个梯段时,进行多梯段的楼梯平台识别处理,具体包括:
根据所述楼梯的走向确定每个梯段的起始线段和终止线段;
将每个梯段的起始线段的两个端点中与所述梯间的距离较小的端点设为起始线段起点,另一端点设为起始线段终点;
将每个梯段的终止线段的两个端点中与所述梯间的距离较小的端点设为终止线段起点,另一端点设为终止线段终点;
根据每个梯段的起始线段起点、起始线段终点、终止线段起点、终止线段终点以及所述梯间的梯间点集找出组成所述楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了使本发明实施例描述的更加清楚,首先对本发明实施例中使用的标准以及技术术语进行定义和说明。
1、制图标准
建筑图纸中各建筑对象的画法是有一定标准的,基于建筑图纸的屋顶自动识别技术也是基于这一标准而开发,本发明实施例采用的国家建筑制图标准为《建筑制图统一标准》(GB50104-2010)。
2、线段的起点与终点
参见图1A至图1B所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于线段的起点与终点的定义示意图,分为两种情况:线段垂直于X轴和线段不垂直于X轴。
如图1A所示,线段AB垂直于X轴,端点为A和B,端点A和B的横坐标相同,比较端点A和B的纵坐标的大小,纵坐标较小的端点设定为线段的起点,纵坐标较大的端点设定为线段的终点,即端点B为起点,端点A为终点。
如图1B所示,线段A1B1和线段A2B2不垂直于X轴,端点分别为A1和B1、A2和B2,只需比较端点A1和B1、端点A2和B2的横坐标的大小,横坐标较小的端点设定为线段的起点,横坐标较大的端点设定为线段的终点,即线段A1B1的端点A1为起点,端点B1为终点,线段A2B2的端点B2为起点,端点A2为终点。
3、Envelope对象
参见图2所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于Envelope对象的定义示意图,在本发明实施例中,每一个空间要素都对应一个Envelope对象,它定义了一个空间要素的空间范围,由(Xmin,Ymin)、(Xmin,Ymax)、(Xmax,Ymax)、(Xmax,Ymin)四个点构成,是每一个要素的最小外接矩形。
4、判断点是否在线段上
根据数学原理,已知直线的方程为A*x+B*y+C=0,点P坐标为(x,y),则点P到直线的距离为基于此判断点与线段的关系。
参见图3所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于判断点是否在线段上的说明示意图,首先判断点P(x,y)是否在线段的Envelope对象内,若点P(x,y)在线段的Envelope对象内,则根据公式求出点P(x,y)到线段的距离d值,若求得的距离d值小于阈值0.005m,则认为点P(x,y)在线段上。
5、判断点是否在多边形内
从目标点出发引一条射线,若这条射线和多边形所有边的交点个数是奇数,则该目标点在多边形内部;若是偶数,则该目标点在多边形外部。
参见图4A至图4B所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于判断点是否在多边形内的说明示意图,设目标点为A3(x0,y0),求出多边形的Envelope对象,从目标点A3(x0,y0)出发引一条射线与多边形的Envelope对象相交于点B3(Xmax,y0),判断线段A3B3与多边形所有边的交点个数,若是奇数,则目标点A3(x0,y0)在多边形内部,如图4A所示;若是偶数,则目标点A3(x0,y0)在多边形外部,如图4B所示。
6、线段相交
如果两条线段相交,则两条线段必然互相跨立,或两条线段中某条线段的某个端点正好落在另一条线段上。
参见图5A至图5B所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于线段相交的说明示意图,线段A4B4端点为A4(x1,y1)和B4(x2,y2),线段A5B5端点为A5(x3,y3)和B5(x4,y4)。
如图5A所示,定义向量a为(x2-x1,y2-y1),向量b为(x3-x1,y3-y1),计算向量a与向量b的叉积a*b=(x2-x1)*(y3-y1)-(x3-x1)*(y2-y1),若a*b>0,则向量a在向量b的顺时针方向;若a*b<0,则向量a在向量b的逆时针方向;若a*b=0,则向量a与向量b共线。
同理,如图5B所示,定义向量a为(x2-x1,y2-y1),向量c为(x4-x1,y4-y1),计算向量a与向量c的叉积a*c,若a*c>0,则向量a在向量c的顺时针方向;若a*c<0,则向量a在向量c的逆时针方向;若a*c=0,则向量a与向量c共线。
计算向量a与向量b的叉积和向量a与向量c的叉积的乘积(a*b)*(a*c),则有:
若(a*b)*(a*c)>0,则向量b与向量c均在向量a的同一侧,即线段A5B4的两个端点在线段A4B4的同一侧;
若(a*b)*(a*c)<0,则向量b与向量c均在向量a的不同侧,即线段A5B5的两个端点在线段A4B4的不同侧;
若(a*b)*(a*c)=0,则向量b与向量c中至少有一个向量与向量a同向,即线段A5B5的两个端点中至少有一个端点在线段A4B4所在的直线上,需要进一步判断线段A5B5是否有端点正好落在线段A4B4上。
同理,判断线段A4B4的两个端点是否在线段A5B5的不同侧。
若任意一条线段的两个端点在另一条线段的不同侧,则两条线段互相跨立,认为两条线段相交。
若两条线段中某条线段的某个端点正好落在另一条线段上,则认为两条线段相交。
否则,认为两条线段不相交。
7、线段共线
共线是指两条线段在同一条直线上或平行的两条线段之间的距离在一定阈值之内。
参见图6A至图6B所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于线段共线的说明示意图,线段A6B6端点为A6(x5,y5)和B6(x6,y6),线段A7B7端点为A7(x7,y7)和B7(x8,y8),端点A6(x5,y5)和B6(x6,y6)之间横坐标的差值的绝对值为d1=|x5-x6|,端点A7(x7,y7)和B7(x8,y8)之间横坐标的差值的绝对值为d2=|x7-x8|。
若d1和d2的值均小于或等于阈值0.0001m,则认为两条线段均垂直于X轴,如图6A所示,两条线段之间的距离为D=|x5-x7|。
若d1和d2的值均大于阈值0.0001m,则认为两条线段均不垂直于X轴,如图6B所示,计算出两条线段的斜率分别为和两条线段的截距分别为b1=y5-k1*x5和b2=y7-k2*x7,此时两条线段之间的距离即为线段A7B7的任一端点到线段A6B6的距离,即
若上述求得的距离D值小于阈值0.01m,且任意一条线段上的一点在另一条线段上,则认为两条线段共线。
8、具有共同端点的线段夹角
参见图7所示,是本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的关于具有共同端点的线段夹角的说明示意图,两条线段的端点分别为A8(x9,y9)和B81(x10,y10)、A8(x9,y9)和B82(x11,y11),具有共同端点A8(x9,y9),则两条线段的夹角为:
9、图元
图元是指建筑图纸中用于表示每一个建筑对象的图形。
10、属性信息
对于线段,其属性信息主要包括起点、终点和点数;对于弧线,其属性信息主要包括弧心、半径、起点和终点;对于圆,其属性信息主要包括圆心和半径。
11、点集
点集是指由具有坐标数据的点组成的集合。
定义并说明了上述标准以及技术术语后,下面对本发明实施例的技术方案进行具体介绍。
参见图8所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的一个优选实施例的流程图,包括步骤S11至步骤S19:
步骤S11、读取楼梯所在图层的信息以获取所述楼梯所在图层中所有线段的端点的坐标数据;
步骤S12、根据所有所述线段的端点的坐标数据分别找出组成每一个梯段的端点的坐标数据对应写入一个梯段点集;
步骤S13、找出所有梯段中分别表示同一个楼梯的梯段;
步骤S14、读取柱所在图层、墙所在图层以及门和窗所在图层的信息以获取所有所述图层中所有图元的属性信息以及端点的坐标数据;
步骤S15、根据每一组表示同一个楼梯的梯段找出所有所述图元的端点中组成楼梯的梯间的端点的坐标数据对应写入一个梯间点集;
步骤S16、根据每一个楼梯的梯段以及楼梯的梯间确定楼梯的走向,并获得梯段的高程数据;
步骤S17、根据每一个楼梯的梯段以及楼梯的梯间找出组成楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集;其中,N>1;
步骤S18、根据每一个楼梯的梯段的高程数据获得楼梯的梯段平台的高程数据;
步骤S19、将每一个所述梯段点集中的所有端点加入对应的高程数据生成梯段三角形点集并输出,将每一个所述梯间点集中的所有端点按找出的顺序依次连接成的封闭线段作为梯间轮廓线输出,将每一个所述梯段平台点集中的所有端点加入对应的高程数据生成梯段平台三角形点集并输出。
具体的,步骤S12根据楼梯所在图层中的所有线段的端点的坐标数据判断哪些端点表示同一个梯段,在表示同一个梯段的端点中找出组成相应梯段的端点的坐标数据对应写入一个梯段点集,并按同样的方法找出组成不同的梯段的端点的坐标数据分别对应写入不同的梯段点集。
具体的,建筑图纸中可能包括不止一个楼梯,因此所有的梯段并不属于同一个楼梯,通过步骤S13将所有的梯段中表示同一个楼梯的梯段归为一组,从而找出所有的梯段中每一组表示同一个楼梯的梯段。
具体的,步骤S14中图元的属性信息以及端点的坐标数据为组成图元的图形的属性信息以及端点的坐标数据,主要包括线段、弧线和圆的属性信息以及线段、弧线和圆的端点的坐标数据,根据图元的属性信息可以判断图元的形状。
具体的,步骤S15根据一个楼梯的梯段找出组成柱、墙、门和窗的端点中组成楼梯的梯间的端点的坐标数据对应写入一个梯间点集,并按同样的方法分别找出不同的楼梯的梯间的端点的坐标数据对应写入不同的梯间点集。
具体的,步骤S17根据一个楼梯的表示梯段的线段和组成楼梯的梯间的端点找出组成楼梯的梯段平台的端点的坐标数据对应写入一个梯段平台点集,并将找出的不同的梯段平台的端点的坐标数据分别对应写入不同的梯段平台点集。
具体的,步骤S19分别将不同的梯段点集中的端点的坐标数据加入对应的高程数据,从而生成不同的梯段三角形点集,分别将不同的梯间点集中的所有端点按顺序依次连接生成不同的梯间轮廓线,分别将不同的梯段平台点集中的端点的坐标数据加入对应的高程数据,从而生成不同的梯段平台三角形点集。
需要说明的是,所有的梯段点集、梯间点集和梯段平台点集中的端点只具有二维平面坐标数据,加入对应的高程数据生成的梯段三角形点集和梯段平台三角形点集中的端点具有三维坐标数据。
需要进一步说明的是,由于建筑图纸中所有楼梯的梯间都是由柱、墙、门和窗等包围组成,因此,本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法是以识别后的柱、墙、门和窗为基础对楼梯的梯间进行识别。所有的梯段三角形点集、梯间轮廓线和梯段平台三角形点集为本发明实施例提供的一种基于建筑图纸的楼梯自动识别方法的识别结果,而通过基于建筑图纸的楼梯自动识别方法处理得到所有的梯段三角形点集中的端点、梯间轮廓线的端点和梯段平台三角形点集中的端点的坐标数据以用于建筑对象楼梯的三维建模。
参见图9所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S12的一个优选实施例的具体流程图,所述根据所有所述线段的端点的坐标数据分别找出组成每一个梯段的端点的坐标数据对应写入一个梯段点集,对于每一个梯段,具体包括步骤S1201至步骤S1202:
步骤S1201、根据所有所述线段的端点的坐标数据找出所有所述线段中表示所述梯段的线段;
步骤S1202、根据表示所述梯段的线段的端点的坐标数据找出组成所述梯段的端点的坐标数据对应写入所述梯段点集。
具体的,当需要找出组成任意一个梯段的端点的坐标数据时,首先需要根据楼梯所在图层中的所有线段的端点的坐标数据判断哪些线段表示该梯段,然后根据表示该梯段的线段的端点的坐标数据找出组成该梯段的端点的坐标数据写入对应的梯段点集。
参见图10所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1201的一个优选实施例的具体流程图,所述根据所有所述线段的端点的坐标数据找出所有所述线段中表示所述梯段的线段,具体包括步骤S1211至步骤S1213:
步骤S1211、找出所有所述线段中相互平行、长度差小于预设的长度阈值且相邻线段的间距小于预设的间距阈值的M条线段;其中,M>3;
步骤S1212、判断所述M条线段的起点和终点是否分别在同一条线段上;
步骤S1213、当所述M条线段的起点和终点分别在同一条线段上时,所述M条线段为表示所述梯段的线段。
具体的,表示同一个梯段的线段为M条平行线段,各线段的长度相差不超过预先设置的长度阈值(一般为0.001m),相邻线段之间的距离不超过预先设置的距离阈值(一般为20m),并且所有线段的起点在同一条线段上,终点也在同一条线段上,对于任意一个梯段,通过执行步骤S1211至步骤S1213即可找出表示该梯段的线段。
参见图11所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1202的一个优选实施例的具体流程图,所述根据表示所述梯段的线段的端点的坐标数据找出组成所述梯段的端点的坐标数据对应写入所述梯段点集,具体包括步骤S1221至步骤S1223:
步骤S1221、判断表示所述梯段的线段是否平行于X轴;
步骤S1222、当表示所述梯段的线段平行于X轴时,找出表示所述梯段的线段的端点中纵坐标最小和纵坐标最大的端点所在的线段,并将找出的线段的端点的坐标数据写入所述梯段点集;
步骤S1223、当表示所述梯段的线段不平行于X轴时,找出表示所述梯段的线段的端点中横坐标最小和横坐标最大的端点所在的线段,并将找出的线段的端点的坐标数据写入所述梯段点集。
具体的,在找出表示梯段的线段之后,首先根据线段的端点的坐标数据判断线段是否平行于X轴,若表示梯段的线段平行于X轴,则比较所有线段的端点的纵坐标,分别找出纵坐标最小的端点和纵坐标最大的端点,并确定纵坐标最小的端点所在的线段和纵坐标最大的端点所在的线段,这两条线段的端点即为组成梯段的端点;若表示梯段的线段不平行于X轴,则比较所有线段的端点的横坐标,分别找出横坐标最小的端点和横坐标最大的端点,并确定横坐标最小的端点所在的线段和横坐标最大的端点所在的线段,这两条线段的端点即为组成梯段的端点。
需要说明的是,通过对每一个梯段均执行步骤S1221至步骤S1223以找出所有组成梯段的端点的坐标数据分别对应写入一个梯段点集。
结合图12A至图12B所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1202的一个优选实施例的示意图,如图12A所示,图中已找出表示梯段的线段为线段L1~线段L8,并且根据线段L1~线段L8的端点的坐标数据判断线段不行平与X轴。
比较线段L1~线段L8的所有端点的横坐标,找出横坐标最小的端点为端点1,横坐标最大的端点为端点4,并且端点1所在的线段为线段L1,端点4所在的线段为线段L8,则线段L1的端点1和端点2以及线段L8的端点3和端点4为组成梯段的端点,将端点1~端点4的坐标数据写入梯段所对应的梯段点集,如图12B所示。
同理,对于不同的梯段,按上述方法找出组成不同的梯段的端点的坐标数据分别对应写入不同的梯段点集,从而完成对所有的梯段的识别。
在一个优选实施例中,所述找出所有梯段中分别表示同一个楼梯的梯段,具体包括:
读取扶手所在图层的信息以获取所述扶手所在图层中所有扶手图元的属性信息以及端点的坐标数据;
分别找出所有梯段中与同一个所述扶手图元相连的梯段;其中,与同一个所述扶手图元相连的梯段为表示同一个楼梯的梯段;
根据每一个所述扶手图元找出所有梯段中分别表示同一个楼梯的梯段。
具体的,同一个扶手图元表示同一个楼梯,同一个楼梯至少包括一个梯段,而属于同一个楼梯的梯段有一侧的扶手是相连的,因此,可以根据扶手来识别出哪些梯段属于同一个梯段,在完成对所有梯段的识别的基础上,通过判断不同的梯段的线段是否与同一个扶手的线段或弧线相连,从而找出与同一个扶手相连的梯段,完成对同一个楼梯的识别。
需要补充说明的是,当建筑图纸中的楼梯没有扶手时,对于只包括一个梯段的楼梯,可以理解的,这一个梯段即为表示该楼梯的梯段;对于包括不止一个梯段的楼梯,则可根据实际情况以及与楼梯相连的墙线的具体情况识别出表示该楼梯的所有梯段。
参见图13所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S15的一个优选实施例的具体流程图,所述根据每一组表示同一个楼梯的梯段找出所有所述图元的端点中组成楼梯的梯间的端点的坐标数据对应写入一个梯间点集,对于每一个楼梯的梯间,具体包括步骤S1501至步骤S1507:
步骤S1501、分别以所述楼梯的每一个梯段的梯段点集中的端点为圆心,对应生成预设半径的圆形缓冲区,找出在圆形缓冲区内的所述楼梯与所有所述图元的所有交点;
步骤S1502、找出所有所述交点中与圆心的距离最小的交点作为初始起点,并将所述初始起点的坐标数据写入所述梯间点集;
步骤S1503、以所述初始起点为中心点,以与所述初始起点的距离最小的圆心所在的梯段的线段的另一个端点为辅助点,控制连接中心点和所述辅助点的线段绕中心点顺时针或逆时针旋转;
步骤S1504、找出所述线段旋转角度最小或最大时与所述线段重合且与中心点相连的线段,并将找出的线段的端点的坐标数据写入所述梯间点集;
步骤S1505、判断当前写入所述梯间点集的所述端点是否为所述初始起点;
步骤S1506、若当前写入所述梯间点集的所述端点不为所述初始起点,则以当前写入所述梯间点集的所述端点为中心点,控制连接中心点和前一个写入所述梯间点集的端点的线段绕中心点继续顺时针或逆时针旋转,并返回步骤S1504;以及,
步骤S1507、若当前写入所述梯间点集的所述端点为所述初始起点,则找出组成所述楼梯的梯间的端点的坐标数据对应写入所述梯间点集的过程结束。
具体的,步骤S1501在识别出楼梯以及楼梯的梯段的基础上,以所有的梯段点集中的端点为圆心,分别生成预设半径(一般为0.2m)的圆形缓冲区,求出在圆形缓冲区内的楼梯(包括梯段和扶手)与柱、墙、门和窗等的所有交点。
具体的,步骤S1503中若控制连接中心点和辅助点的线段绕中心点顺时针旋转,则后续执行步骤S1506时均控制连接中心点和前一个写入梯间点集的端点的线段绕中心点继续顺时针旋转;步骤S1503中若控制连接中心点和辅助点的线段绕中心点逆时针旋转,则后续执行步骤S1506时均控制连接中心点和前一个写入梯间点集的端点的线段绕中心点继续逆时针旋转。
具体的,步骤S1504中若找出线段旋转角度最小时与线段重合且与中心点相连的线段,则后续执行步骤S1504时均找出线段旋转角度最小时与线段重合且与中心点相连的线段;步骤S1504中若找出线段旋转角度最大时与线段重合且与中心点相连的线段,则后续执行步骤S1504时均找出线段旋转角度最大时与线段重合且与中心点相连的线段。
需要说明的是,步骤S1504中找出线段旋转角度最小或最大时与线段重合且与中心点相连的线段,这里寻找与旋转线段重合的线段不包括旋转线段本身;找出的线段与中心点相连具体指找出的线段的一个端点的坐标数据与中心点的坐标数据相同,则将找出的线段的另一个端点的坐标数据写入梯间点集。
具体的,步骤S1505根据当前写入梯间点集的端点的坐标数据和初始起点的坐标数据是否相同判断当前写入梯间点集的端点是否为初始起点。
需要说明的是,通过对每一个楼梯的梯间均执行步骤S1501至步骤S1507以找出所有组成楼梯的梯间的端点的坐标数据分别对应写入一个梯间点集。
结合图14A至图14E所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S15的一个优选实施例的示意图,如图14A所示,图中楼梯的梯间内包括一个梯段,线段L1~线段L4为表示该梯段的线段,相应的梯段点集中的端点为端点1~端点4。
由于图中楼梯的梯间由柱、墙、门和窗包围组成,对梯间的识别是以识别后的柱、墙、门和窗为基础进行的,其中:
对于图中的表示扇形门的图元,首先以连接两条线段不与弧线相连的一端的线段作为扇形门的初始门线,然后找出所有墙线中与初始门线垂直且分别与初始门线的两端的距离最小的两段墙线,最后将初始门线延长至与找出的两段墙线相交并求出两个交点,以连接两个交点的线段作为扇形门的门线,则用生成的门线相应代替图中表示扇形门的图元,如图14B所示,用门线AB代替原来的表示扇形门的图元。
对于图中的表示直形窗的图元,首先找出表示直形窗的图元中的任意一条线段作为直形窗的初始窗线,这里靠近梯间一侧的线段作为初始窗线,然后找出所有墙线中与初始窗线垂直且分别与初始窗线的两端的距离最小的两段墙线,最后将初始窗线延长至与找出的两段墙线相交并求出两个交点,以连接两个交点的线段作为直形窗的窗线,则用生成的窗线相应代替图中表示直形窗的图元,如图14B所示,用窗线CD代替原来的表示直形窗的图元。
在对柱、墙、门和窗进行识别处理后,对井的识别的详细过程如下:
如图14B所示,分别以端点1~端点4为圆形,对应生成半径为0.2m的四个圆形缓冲区,求出在四个圆形缓冲区内的楼梯与柱、墙、门和窗等的所有交点,分别为楼梯与墙的交点2和交点4,由于交点2与圆心2重合,交点4与圆心4重合,交点2和交点4到圆心的距离都最小,这里选择交点2作为初始起点,并将初始起点2的坐标数据写入梯间点集。
以初始起点2为中心点,以与初始起点2的距离最小的圆心2所在的梯段的线段L1的另一个端点1为辅助点,控制连接中心点2和辅助点1的线段21绕中心点2顺时针旋转(逆时针旋转的情况同理)。
找到与线段21重合且与中心点2相连的线段包括线段25和线段26,并且线段21在顺时针旋转过程中形成夹角∠125和夹角∠126,比较两个夹角的大小,夹角∠125最小,则找出线段21旋转角度最小时(最大时的情况同理)与线段21重合且与中心点2相连的线段为线段25,将线段25的端点5的坐标数据写入梯间点集,如图14C所示。
判断当前写入梯间点集的端点5不为初始起点2,则以当前写入梯间点集的端点5为中心点,控制连接中心点5和前一个写入梯间点集的端点2的线段52绕中心点5继续顺时针旋转。
找到与线段52重合且与中心点5相连的线段包括线段57和线段58,并且线段52在顺时针旋转过程中形成夹角∠257和夹角∠258,比较两个夹角的大小,夹角∠257最小,则找出线段52旋转角度最小时与线段52重合且与中心点5相连的线段为线段57,将线段57的端点7的坐标数据写入梯间点集,如图14D所示。
判断当前写入梯间点集的端点7是否为初始起点2,若不是,则按同样的方法继续寻找下一个符合条件的端点的坐标数据写入梯间点集,并判断是否为初始起点2,直到当前写入梯间点集的端点为初始起点2为止。
若当前写入梯间点集的端点为初始起点2,则找出组成楼梯的梯间的端点的坐标数据写入梯间点集的过程结束,找出的所有端点按顺序依次为端点2、端点5、端点7、端点9、端点10、端点11、端点12、端点13、端点14、端点15、端点16、端点17、端点18、端点19、端点6和端点2,如图14E所示。
同理,对于不同的楼梯的梯间,按一定顺序找出组成不同楼梯的梯间的端点的坐标数据分别对应写入不同的梯间点集,最终将不同的梯间点集中的所有端点按找出的顺序依次连接成的封闭线段作为不同的梯间轮廓线输出,从而完成对所有的楼梯的梯间的识别。
参见图15所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S16的一个优选实施例的具体流程图,所述根据每一个楼梯的梯段以及楼梯的梯间确定楼梯的走向,并获得梯段的高程数据,对于每一个楼梯,具体包括步骤S1601至步骤S1605:
步骤S1601、找出所述楼梯的最底层梯间的门的门线;
步骤S1602、分别计算表示所述楼梯的梯段的所有线段的中点到所述门线的中点的距离;
步骤S1603、找出与所述门线的中点的距离最小的线段作为所述楼梯的起始线段;
步骤S1604、根据所述楼梯的起始线段确定所述楼梯的走向;
步骤S1605、根据所述楼梯的走向、所述楼梯所在楼层的地板的高程数据和墙的高程数据计算获得所述楼梯的梯段的高程数据。
需要说明的是,楼梯走向的确定是根据最底层的梯间内的梯段进行识别,其中,属于同一个楼梯的梯间的Envelope对象的平面坐标是相同的,根据梯间的高程数据即可确定出最底层的梯间。
具体的,首先根据识别出的楼梯的最底层的梯间,找出属于该梯间的门的门线,并求出门线的中点;然后找出最底层的梯间内的梯段,并求出表示楼梯的所有梯段的线段的中点,分别计算各线段的中点到门线的中点的距离,比较距离的大小,将到门线的中点的距离最小的中点所在的线段作为楼梯的起始线段,同时也是该线段所在梯段的起始线段;在起始线段所在梯段的所有表示该梯段的线段中,找出与起始线段距离最大的线段作为该梯段的终止线段;根据梯段的起始线段和终止线段从而可以确定该梯段的走向;若梯间内只包括一个梯段,则根据梯段的起始线段和终止线段可以确定楼梯的走向,若梯间内包括至少两个梯段,根据已经确定起始线段和终止线段的梯段可以确定其他梯段的起始线段和终止线段,从而确定其他梯段的走向,进而确定楼梯的走向。
具体的,梯段的高程数据的计算包括多种情况,若梯间内只包括一个梯段,则该梯段的起始线段的高程为当前楼层的地板的高程,终止线段的高程为当前楼层的地板的高程与墙的高程的一半之和;若梯间内包括至少两个梯段,这里以梯间内包括两个梯段为例进行说明,结合图16所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S16的一个优选实施例的示意图,梯间内包括两个梯段,分别为梯段1和梯段2,按上述方法可以确定梯段1的起始线段为线段L1,终止线段为线段L2,相应的,梯段2的起始线段为线段L3,终止线段为线段L4,则梯段1的起始线段L1的高程为当前楼层的地板的高程,梯段1的终止线段L2的高程为当前楼层的地板的高程与墙的高程的三分之一之和,梯段2的起始线段L3的高程与梯段1的终止线段L2的高程相同,梯段2的终止线段L4的高程为当前楼层的地板的高程与墙的高程的三分之二之和。
参见图17所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S17的一个优选实施例的具体流程图,所述根据每一个楼梯的梯段以及楼梯的梯间找出组成楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集,对于每一个楼梯,具体包括步骤S1701至步骤S1703:
步骤S1701、判断所述楼梯的同一个梯间内包括几个梯段;
步骤S1702、当所述楼梯的同一个梯间内包括一个梯段时,进行单梯段的楼梯平台识别处理;
步骤S1703、当所述楼梯的同一个梯间内包括至少两个梯段时,进行多梯段的楼梯平台识别处理。
需要说明的是,本实施例中的同一个梯间指楼梯的同一层梯段所在的梯间,可以理解的,当同一个梯间内包括的梯段数量不同时,梯段对应的梯段平台的数量也不同,需要分别根据不同的情况进行相应的识别处理。
参见图18所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1702的一个优选实施例的具体流程图,所述当所述楼梯的同一个梯间内包括一个梯段时,进行单梯段的楼梯平台识别处理,具体包括步骤S1711至步骤S1713:
步骤S1711、找出所述单梯段的距离最大的两条线段;
步骤S1712、分别将找出的两条线段的两端延长至与所述梯间相交,并求出四个交点;
步骤S1713、根据求出的四个交点以及所述梯间的梯间点集找出组成所述楼梯的2个梯段平台的端点的坐标数据分别对应写入2个梯段平台点集。
具体的,对于梯间内只包括一个梯段的情况,对应的梯段平台有2个,首先找出表示梯段的所有线段中距离最大的两条线段,然后将这两条线段的两端分别延长至与梯间相交,并分别求出四个交点,由于梯间已经识别完成,则根据梯间点集中的端点和求出的四个交点可以找出分别组成2个梯段平台的所有端点。
结合图19A和图19B所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1702的一个优选实施例的示意图,如图19A所示,梯间内只包括一个梯段,对应的梯段平台分别为梯段平台1和梯段平台2,线段L1和线段L2为表示梯段的所有线段中距离最大的两条线段,并且识别完成的梯间点集中的端点分别为端点1~端点14;将线段L1和线段L2的两端分别延长至与梯间相交,求出四个交点分别为交点1、交点15、交点16和交点17,则组成梯段平台1的端点为端点1、端点2、端点3、端点4、端点5、端点6和端点15,组成梯段平台2的端点为端点16、端点7、端点8、端点9、端点10、端点11、端点12、端点13、端点14和端点17,如图19B所示,将找出的端点的坐标数据分别对应写入梯段平台1和梯段平台2的梯段平台点集。
参见图20所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1703的一个优选实施例的具体流程图,所述当所述楼梯的同一个梯间内包括至少两个梯段时,进行多梯段的楼梯平台识别处理,具体包括步骤S1721至步骤S1724:
步骤S1721、根据所述楼梯的走向确定每个梯段的起始线段和终止线段;
步骤S1722、将每个梯段的起始线段的两个端点中与所述梯间的距离较小的端点设为起始线段起点,另一端点设为起始线段终点;
步骤S1723、将每个梯段的终止线段的两个端点中与所述梯间的距离较小的端点设为终止线段起点,另一端点设为终止线段终点;
步骤S1724、根据每个梯段的起始线段起点、起始线段终点、终止线段起点、终止线段终点以及所述梯间的梯间点集找出组成所述楼梯的N个梯段平台的端点的坐标数据分别对应写入N个梯段平台点集。
具体的,对于梯间内包括至少两个梯段的情况,根据已经确定的楼梯的走向可以获得每个梯段的表示梯段的线段中的起始线段和终止线段,对于任意一个梯段,分别比较该梯段的起始线段的两个端点和终止线段的两个端点到梯间的轮廓线的距离,将起始线段的两个端点中靠近梯间轮廓线一侧的端点设为起始线段的起点,另一个端点设为起始线段的终点,并将终止线段的两个端点中靠近梯间轮廓线一侧的端点设为终止线段的起点,另一个端点设为终止线段的终点,则根据每个梯段的起始线段的起点、起始线段的终点、终止线段的起点、终止线段的终点以及梯间的梯间点集中的端点可以找出分别组成楼梯的N个梯段平台的所有端点。
结合图21A至图21B所示,是本发明提供的一种基于建筑图纸的楼梯自动识别方法的步骤S1703的一个优选实施例的示意图,如图21A所示,梯间内包括三个梯段,分别为梯段1、梯段2和梯段3,其中,梯段1的起始线段为线段L1,终止线段为线段L2,梯段2的起始线段为线段L3,终止线段为线段L4,梯段3的起始线段为线段L5,终止线段为线段L6,对应的梯段平台分别为梯段平台1、梯段平台2和梯段平台3,并且识别完成的梯间点集中的端点为端点1~端点15。
按上述方法找出的各梯段的起始线段的起点和起始线段的终点分别为:起始线段L1的起点为端点a1,终点为端点b1,终止线段L2的起点为端点a2,终点为端点b2,起始线段L3的起点为端点a3,终点为端点b3,终止线段L4的起点为端点a4,终点为端点b4,起始线段L5的起点为端点a5,终点为端点b5,终止线段L6的起点为端点a6,终点为端点b6。
从任意一个梯段的起始线段开始,这里假设从梯段1的起始线段L1开始查找组成梯段平台1的所有端点,首先,以端点a1作为初始起点并将初始起点a1的坐标数据写入梯段平台1的梯段平台点集,然后查找与初始起点a1相连的端点,包括端点1和端点a2,由于端点a2为梯段1的终止线段L2的起点,因此端点a2不满足要求,即相连的端点为同一个梯段的终止线段上的端点,应舍弃,并将端点1的坐标数据写入上述梯段平台点集。
查找与端点1相连的端点,包括端点2和端点15,均为梯间的端点,由于与端点15相连的端点包括端点a2和端点14,而端点a2为梯段1的终止线段L2的起点,因此端点15不满足要求,应舍弃,并将端点2的坐标数据写入上述梯段平台点集。
查找与端点2相连的端点,只有端点3,且为梯间的端点,则将端点3的坐标数据写入上述梯段平台点集。
查找与端点3相连的端点,包括端点a6和端点4,由于与端点4相连的端点包括端点a5和端点5,而端点a5为梯段3的起始线段L5的起点,因此端点4不满足要求,即相连的端点为另一个梯段的起始线段上的端点,应舍弃,并将端点a6的坐标数据写入上述梯段平台点集。
同理,找出下一个满足要求的端点的坐标数据写入上述梯段平台点集,直至找出端点b1为止,即找出的端点为初始起点a1所在的起始线段的终点,并将端点b1的坐标数据写入上述梯段平台点集。
对于梯段平台2和梯段平台3,同样按上述方法进行查找,则可以找出分别组成梯段平台2和梯段平台3的所有端点,并将找出的端点的坐标数据对应写入梯段平台2和梯段平台3的梯段平台点集。
如图21B所示,组成梯段平台1的端点为端点a1、端点1、端点2、端点3、端点a6、端点b6和端点b1,组成梯段平台2的端点为端点a2、端点15、端点14、端点13、端点12、端点11、端点16、端点a3、端点b3和端点b2,组成梯段平台3的端点为端点a5、端点4、端点5、端点6、端点7、端点8、端点a4、端点b4端点b5。
需要补充说明的是,由于图中梯间的端点7到端点12之间的轮廓线为弧线,在实际的识别过程中,需要将弧线转换成多线段的形式进行表示,其中,多线段的顶点个数根据实际情况进行设置,多线段的顶点的个数越多,多线段与弧线越相似,同理,该方法适用于在本发明的任意一个实施例,这里为了表述方便,省略了这一转换过程。
另外,根据梯段的高程数据可以获得相应的梯段平台的高程数据,具体的,结合图21A所示,梯段平台1的高程为梯段1的起始线段L1的高程,梯段平台2的高程为梯段2的起始线段L3的高程,梯段平台3的高程为梯段3的起始线段L5的高程。
本发明实施例所提供的一种基于建筑图纸的楼梯自动识别方法,通过读取楼梯所在图层的信息识别出每一个梯段点集;根据识别出的所有梯段找出分别表示同一个楼梯的梯段;通过读取柱所在图层、墙所在图层以及门和窗所在图层的信息识别出每一个梯间点集;根据每一个楼梯的梯段以及梯间确定楼梯的走向,获得梯段的高程数据,并识别出每一个梯段平台点集以及获得梯段平台的高程数据;将每一个梯段点集加入对应的高程数据生成相应的梯段三角形点集并输出,根据每一个梯间点集生成相应的梯间轮廓线并输出以及将每一个梯段平台点集加入对应的高程数据生成相应的梯段平台三角形点集并输出;可以解决现有技术在建筑图纸的识别过程中对建筑对象的识别效率低,识别精度低的问题,从而提高了建筑对象楼梯的识别效率及识别精度。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。