CN106683167B - 复杂建筑物高精度模型自动建模方法 - Google Patents
复杂建筑物高精度模型自动建模方法 Download PDFInfo
- Publication number
- CN106683167B CN106683167B CN201610563422.9A CN201610563422A CN106683167B CN 106683167 B CN106683167 B CN 106683167B CN 201610563422 A CN201610563422 A CN 201610563422A CN 106683167 B CN106683167 B CN 106683167B
- Authority
- CN
- China
- Prior art keywords
- polygon
- building
- boundary
- nodes
- modeling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30181—Earth observation
- G06T2207/30184—Infrastructure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/04—Architectural design, interior design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2215/00—Indexing scheme for image rendering
- G06T2215/16—Using real world measurements to influence rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Remote Sensing (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种复杂建筑物的高精度建模方法,该方法包括以下步骤:读取和预处理步骤:读取建筑物的建筑数据并进行预处理;提取步骤:对预处理后的建筑数据进行提取,获得用于建模的建模信息;建模步骤:利用提取步骤获得的建筑信息进行建筑物的主体建模以及屋顶建模;主体建模是基于建筑物边界的平面坐标和高程数据进行建模,是将建模信息中的建筑边界的节点的绘制顺序进行重新排列后输入到三维引擎进行建模;屋顶建模,根据建筑物屋顶边界的平面坐标对屋顶形状对屋顶边界进行处理,在不增加屋顶边界的节点的基础上根据屋顶形状以及高程数据进行建筑物的屋顶建模。
Description
技术领域
本发明涉及一种构建三维模型的方法,尤其涉及复杂建筑物的高精度三维建模的方法。
背景技术
目前复杂建筑物的三维建模主要采取将复杂的多边形简化为简单多边形的办法建立三维模型,这种办法经常会导致建筑物三维模型的精度不高,难于准确表示建筑物的细节,而且需要大量的人工干预。现有技术采用的方案都是利用二维数据提取建筑物边界后,读取建筑物高度属性来生成建筑物的墙体,然后再将屋顶进行一定程度的简化,建立屋顶的三维模型,最后输出到三维引擎显示渲染。现有技术主要有以下几种方式:
(一)夏晓飞在“利用GIS数据生成3D建筑模型”以及“利用GIS数据半自动生成3D建筑模型”研究中提出的解决方案是,将将整个建模过程分为主体建模和房顶建模。对于主体建模,利用平面图的多边形数据和高程数据完成建筑模型的立面生成。立面生成首先要遍历每个多边形的每条边,对其中任意一条边,根据其高程数据构造出对应于标高的两个顶点,形成一个四边形立面,如图1所示。屋顶建模流程如图2所示,作者根据用户输入的屋顶类型和参数,建立相应的数学模型,将屋顶转换成简单多边形来建模。其中屋顶分为以下四种人字型屋顶、平屋顶、辐射状屋顶、任意曲线族扫略屋顶。
1、人字型屋顶的建模流程
1)在6条边中找到最长的一条边(Lmax),将它指定为Box1(P(1),P(6),P(3b),P(2))的长和横梁的方向,如图3所示。
2)在连接Lmax的两条边中,取较长的边为Box2(P(1a),P(2a),P(3),P(4))的长(L_box2)。则较短的边为Box1的宽(W_Box1),如图3所示。
图3a中添加了几个辅助点,P(1a)指线段P(4)P(5)与Box2垂直中线的交点;P(2a)指Box2垂直中线与P(2)P(3)交点;P(3b)指P(5)P(2)与P(2)P(3)的交点。
3)令os等于L_box2减去W_box1,令a=os/W_Box1,当a大于0.1时,Box2作为子屋顶;当a小于等于0.1时,Box2作为主屋顶的延伸如图3d所示。
4)分割结束后,如果附加区域与主区域的共有线段与主区域的横梁(即主区域矩形的长)平行,则附加区域的横梁与主区域的横梁垂直。如果共有线段与主区域的横梁垂直,则附加区域的横梁与主区域的横梁平行。
5)在完成分割后,先对主梁所在的矩形生成人字型屋顶,然后对辅梁所在的矩形生成屋顶。
2、平屋顶建模流程
1)检测平屋顶边界内的多边形镶嵌情况,即屋顶多边形内部存在多少多边形,将镶嵌信息存储在一个层次链表结构中。
2)遍历这个层次内各多边形内部存在多少多边形,然后依次类推,得到屋顶的完整的多边形层次结构。
3)给予各多边形赋予高度,建立三维模型如图5所示。
3、辐射状屋顶建模流程
在求取多边形边界的重心之后,由用户指定的定高h生成多边形面片再建模,算法如下:
2)根据用户指定顶高,得出辐射重心坐标为T(xc,yc,h)。
3)根据T点和边界各顶点生成三角形面片如图6所示。
4、任意曲线组扫略屋顶建模流程:
1)指定每条曲线起点和终点,以及曲线所在曲面的厚度,扫略的长度。
2)由上述属性生成多边形面片,然后由面生成体建模,如图7、8所示。
立面和屋顶都生成后,需要将屋顶和立面连接起来,其基本算法是对关键点重新计算其高程值。对于平顶屋顶,直接在生成立面的高度位置生成屋顶即可。对于比较特殊形状的屋顶,如双坡顶、单坡顶、圆弧屋顶,需要重新计算其立面高程信息,重新生成立面多边形,如图9,10,11所示。
(二)丁伟利在《基于OpenFlight API的建筑物场景自动建模及红外仿真》研究中利用Google Earth提供的高分辨率航片中的阴影和地形信息,结合OpenFlight API进行建筑物的自动三维建模。
1、假定城市中的建筑物均为平顶、矩形侧面结构,城市中地势平坦的区域位于同一平面上。建筑物建模所需的参数包括屋顶多边形顶点和建筑物高度,均从航片直接求得。
2、加载Google Earth提供的图像后,由选区工具栏如图12中的多边形工具如图13所示,手动点选屋顶多边形顶点并保存。
3、可以利用图像中大量的阴影信息来确定城市中建筑物的高度信息。
4、将Google Earth航拍图片作为纹理映射到屋顶生成模型如图14所示。
(三)金宝轩在《三维城市模型的构造方法与可视化研究》研究中提出基于三角剖分的分层叠加方法的建筑物模型的构造法。在二维GIS中,通常将物体的几何信息和属性信息通过内部标识进行连接来描述对象。作者考虑到3D建筑物的复杂性,增加一项指针来指向每一层的标识,即将建筑物分层,一般分为墙体和屋顶;如果建筑物比较复杂,则分为三层或更多层,每层再划分为墙体和屋顶,建筑物分层模型如图15所示。建筑物的墙体和屋顶用三角形来剖分多边形边界,如图16所示。如果建筑物的墙体或屋顶为曲面,则需采集或内插一定数量的特征点,然后以一定的规则在多边形边界内部构成三角网,达到三角剖分的目的。然后再根据三角形信息建模三维模型。
由上述内容可知,采用现有技术的方案所建模型精度不高,难于表现复杂建筑物的细节,如建筑物的天井、不规则的建筑体等;而且上述方法均需要大量的人工干预,如上述夏晓飞“利用GIS数据生成3D建筑模型”的研究中处理屋顶时需要添加辅助点,丁伟利在《基于OpenFlightAPI的建筑物场景自动建模及红外仿真》中需要人工从google earth中提取建筑物信息,金宝轩在《三维城市模型的构造方法与可视化研究》的研究中在三角形剖分时需要添加辅助点。上述方案中需要人工干预的主要原因在于:
1、建模过程中,均试图以将复杂的建筑物转化为较为简单规则的形状来建模,即将复杂多边形简化为简单多边形。这样必然造成建筑物信息的丢失,难以表现建筑物的细节,导致精度不高。
2、对于一些复杂的建筑物,由于很难用简单多边形拟合,导致无法建模。
3、建筑物形状从数学上来说,是多个规则线段连接而成,如同时具有弧线和直线的建筑物,弧线和直线各自具有自己的数学模型。如果要分解,势必需要人工判断弧线与直线的分割点才能保证分解的正确性,所以上述方法都需要大量的人工干预,导致建模的效率不高。
综上所述,亟需提出一种解决方案能够用于复杂建筑物的三维建模,进而决现有技术中精度不够、效率不高等缺陷。
发明内容
为了解决上述技术问题,本发明提出一种复杂建筑物的高精度三维建模的方法,该方法包括以下步骤:
读取和预处理步骤:读取所述建筑物的建筑数据并进行预处理;
提取步骤:对所述预处理后的建筑数据进行提取,获得用于建模的建模信息;
建模步骤:利用所述提取步骤获得的用于建模的建筑信息进行所述建筑物的主体建模以及所述建筑物的屋顶建模;
其中所述建筑物的主体建模是基于从所述建模信息中获取的所述建筑物边界的平面坐标和高程数据进行建模;
其中所述建模是将所述建模信息中的建筑边界的节点的绘制顺序进行重新排列后输入到三维引擎进行建模;
其特征在于,
其中所述建筑物的屋顶建模,首先根据从所述建模信息中获取的所述建筑物屋顶边界的平面坐标对屋顶形状进行判定,根据判定结果对所述屋顶边界进行处理,在不增加所述屋顶边界的节点的基础上根据所述屋顶形状以及高程数据进行所述建筑物的屋顶建模。
进一步的,所述读取和预处理步骤中,利用特定软件读取包括建筑数据的文件来获得建筑数据;所述预处理包括对所述读取的建筑数据进行拓扑检查、合并相近点、规范化对象属性以及高程赋值。
进一步的,所述提取步骤中,用于建模的建模信息包括所述建筑物外部和内部边界的节点的三维坐标、所述建筑物的高程信息。
进一步的,所述建模方法还包括存储步骤,将所述提取步骤中获得的所述用于建模的建模信息以二进制文件的形式进行存储。
进一步的,其中所述建模步骤中进行所述建筑物的主体建模时,包括以下步骤:
识别所述建筑物主体的外部边界;
依次读取所述外部边界中相邻两个节点的三维坐标和所述节点对应的所述建筑物高程数据;
根据所述相邻两个节点的平面坐标和各自的高程数据生成新的两个节点;
所述新生成的两个节点与所述相邻的两个节点按照逆时针方向编号后构造出两个三角形;
将所述构造出的两个三角形无缝拼接得到所述建筑物的一个侧面;
遍历所述建筑物的外部边界的其他节点,重复上述步骤,得到所述建筑物主体的建模信息。
进一步的,其中所述建模步骤中进行所述建筑物的屋顶建模时,包括以下步骤:
识别所述建筑物的屋顶边界;
判定所述建筑物的屋顶边界是简单多边形还是复杂多边形;
如果所述建筑物的屋顶边界是简单多边形,则采用简单多边形分解方法将所述简单多边形自动分解为多个三角形得到所述屋顶的建模信息;
如果所述建筑物的屋顶边界是复杂多边形,则采用复杂多边形分解方法将所述复杂多边形分解为多个简单多边形,再利用上述步骤中的简单多边形分解方法得到所述屋顶的建模信息。
进一步的,其中所述简单多边形分解方法包括以下步骤:
判断所述简单多边形的节点个数是否等于3,
如果是,则所述多边形为三角形,将所述三角形的建模信息输入到三维引擎;
如果否,则遍历所述简单多边形的所有节点;
选择所述简单多边形的外部边界上任意两个不共线的节点;
当任意两个不共线节点之间的连线满足以下条件:(I)不与所述外部边界相交、(II)连线的中点位于所述多边形内部时,则连接上述两个节点;如果不满足上述条件则继续遍历下一组不共线的点直到找到满足上述条件的两个不共线的节点;
上述连接的两个节点之间连线将所述多边形分割为两部分得到两个新的简单多边形;
重复执行上述步骤再次对所述新得到的多边形执行分解直到所有得到的简单多边形的节点个数均为3个。
进一步的,其中所述复杂多边形的分解方法包括以下步骤:
首先对所述复杂多边形的外部边界进行简化,在不改变所述复杂多边形的内部边界的建模信息的基础上,将所述复杂多边形的外部边界分解为若干个简单多边形;
再对剩余的简化后的复杂多边形进行除去内部边界,使其内部边界与外部边界通过连线进行合并,得到除去内部边界的简单多边形;
再利用简单多边形分解的方法将上述得到的简单多边形转化为三角形得到建模信息。
进一步的,其中对复杂多边形的外部边界进行简化包括以下步骤:
输入所述复杂多边形的建模信息;
判断所述复杂多边形的外部边界的节点个数是否等于3;
如果是,则对所述多边形执行去除内部边界;
如果否,则遍历所述外部边界的所有节点;
选择所述复杂多边形的外部边界上任意两个不共线的节点;
如果所述两个不共线的节点的连线同时满足以下条件:(I)中点位于多边形内部、(II)不与所述复杂多边形的外部边界相交、(III)不与所述复杂多边形的内部边界相交,则连接上述两个节点,如果不满足上述条件,则继续遍历下一组不共线的点直到找到满足上述条件的两个不共线的节点;如果所述外部边界的全部节点遍历完成后都没有满足上述条件的节点,则对所述多边形执行去除内部边界;
上述连接的两个节点之间连线将所述复杂多边形的外部边界分割为两部分;
遍历所述复杂多边形的所述内部边界的所有节点,判断所述内部边界的所有节点位于上述分割得到的两部分中的哪一部分;
根据所述内部边界的节点的位置将所有节点重新排列,构造得到两个新的多边形;
判断所述两个新的多边形是否含有内部边界,如果有,则继续执行上述复杂多边形外部边界简化方法;
如果没有外部边界,则该新的多边形为简单多边形;
继续执行简单多边形分解方法。
进一步的,其中对复杂多边形除去内部边界的方法包括以下步骤:
选择所述复杂多边形外部边界上的任意一个节点;
遍历所述复杂多边形内部边界上所有节点,找出与上述选择的外部边界上节点距离最近的节点;
如果两个节点的连线同时满足以下条件:(I)不与所述复杂多边形的所述外部边界相交、(II)不与所述复杂多边形的所述内部边界相交,则将上述两个节点相连;如果不满足上述条件,则继续遍历所述内部边界的节点直到找到满足上述条件的点;
上述连接的两个节点之间连线将所述复杂多边形的外部边界和内部边界合并为新的外部边界;
重新排列所述复杂多边形的所述节点,构造出新的复杂多边形;
判断所述新的复杂多边形是否含有内部边界;
如果有,则所述新的多边形为复杂多边形,将对所述新的多边形执行外部边界简化;
如果没有,则所述新的多边形为简单多边形,将对所述新的多边形执行简单多边形分解。
进一步的,所述建筑物的屋顶建模时,当所述建筑物的高程数据不同时,则按照高程值的不同进行分层,每层分别建模。
本发明的有益效果:
(1)适用对象广
本发明考虑到现实世界中各种各样的建筑物,既可对不规则建筑物建模,又可以体现天井等特殊建筑结构,本方法适用范围更广。
(2)精度高
本发明通过编写算法将多边形处理为多个无缝连接的三角形集合,在保持建筑物的细节特性的基础上极高精度地对复杂建筑物进行建模仿真。
(3)效率高
本发明通过编写算法对建筑物数据重新构造其拓扑结构,然后将其直接处理为多个无缝连接的三角形集合,直接输出到三维引擎中建立建筑物模型,无需对建筑物数据进行人工干预或添加辅助点,减少了人工判断时间和渲染面数,极大提高建模的自动化效率和渲染效率。另一方面,本发明可一次性读取大量建筑数据,对其进行批量建模,极大提高了建模的效率。
附图说明
图1-17是现有技术的建模方法的示意图。
图18-21是本发明的所示的复杂多边形、凸边形和凹边形以及多边形节点的示意图。
图22是本发明所示的Envelope对象的示意图。
图23-25是本发明所示的多边形分解的示意图。
图26是本发明所示的建模流程。
图27-28是本发明所示的多边形拓扑检查的示意图。
图29-30是本发明所示的简单多边形和复杂多边形的边界节点的示意图。
图31-34是本发明所示的所述建筑物主体部分建模的示意图。
图35是本发明所示的所述建筑物楼顶部分建模的流程图。
图36-39是本发明所示的判断多边形中的节点连线是否与多边形相交的示意图;
图40-46是本发明所示的判断节点是否在多边形内部的示意图;
图47是本发明所示的简单多边形的分解流程图;
图48-49是本发明实施例所示的简单多边形的分解过程;
图50是本发明所示的复杂多边形的简化外部边界的流程图;
图51是本发明所示的复杂多边形的除去内部边界的流程图;
图52-62是本发明所示的复杂多边形的分解过程;
图63-72是本发明实施例所示的复杂多边形的分解过程;
图73-74是本发明所示的高程不同的建筑物的建模过程。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。但本领域技术人员知晓,本发明并不局限于附图和以下实施例。
为了使本发明描述的更加清楚,首先对本发明中使用的技术术语进行定义。
1、简单多边形
一个多边形(polygon)在数学上定义为由三个或更多称为顶点的坐标位置描述的平面图形,这些顶点由称为多边形的边(edge或s编号e)顺序连接,几何上要求多边形的边除了端点之外没有其他的公共点。因此,根据定义,一个多边形在其单一平面上必须有其所有的顶点且边之间无交叉。若其没有交叉边则称为标准多边形(standard polygon)或简单多边形(simple polygon)。
2、复杂多边形
单个简单多边形只用一个顶点集描述,若其内部包含至少一个简单多边形,即如图18所示的孔洞,则需要用多个顶点集来描述。若其至少需要两个顶点集来描述则称为复杂多边形。
3、多边形的凹凸性
多边形的一个内角(interior angle)是由两条相邻边形成的多边形边界之内的角。如果一个多边形的所有内角均小于180°,则该多边形为凸(convex)多边形,如图19(a)所示。如果有一个角内角大于180度则为凹(concave)多边形,如图19(b)所示。
4、拓扑
空间数据如点、线、多边形等在计算机中均以点集的形式表示,这些点集之间的关系如邻接、关联、包含和连通等称为空间数据的拓扑。
1)简单多边形的拓扑
多边形是由一定数量的有序的点连接且闭合而成的。简单多边形的节点是按顺时针的方向依次连接的。如图20所示,17个节点按顺时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点16为尾节点。
2)复杂多边形的拓扑
与简单多边形一样,复杂多边形的外部边界的节点也是按顺时针方向依次连接的,其内部边界的节点则是按逆时针方向依次连接。如图21所示,该多边形由三个点集组成:外部边界,9个节点按顺时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点8为尾节点;左下角的内部边界,28个节点按逆时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点27为尾节点;左上角的内部边界,21个节点按逆时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点20为尾节点。
因此,当沿着多边形边界的节点的连接顺序进行遍历时,无论是内部边界还是外部边界,沿连接顺序方向前进时,多边形的内部位于右手位,外部位于左手位。
5、Envelope对象
在本发明中,每一个空间要素都对应一个Envelope对象。它定义了一个空间要素的空间范围,由(Xmin,Ymax),(Xmax,Ymax),(Xmin,Ymin),(Xmax,Ymin)四个点构成,是每一个要素的最小外接矩形。多边形的Envelope对象,如图22所示。
6、多边形的分解
现有三维引擎都是基于OpenGL和DirectX开发的,二者所绘制的多边形均为三角形集合,即必须将多边形转化为三角形集合,才能经由三维引擎绘制输出。另外,二者皆指定多边形从“外部”观察它时的逆时针方向描述,所以将三角形集合输入到三维引擎前,须将三角形的节点按逆时针方向重新编号。以图23中多边形为例,多边形分解过程如下。
①.按一定的规则连接点P0、点P2;
②.沿着点P0-点P2将多边形一分为二,构造出新的多边形,分别是多边形a和多边形b;
③当分解后的多边形是三角形时,将其节点按逆时针方向,从0开始重新编号,并输入到三维引擎中。多边形的绘制效果如图25所示。
2)复杂多边形的拓扑
与简单多边形一样,复杂多边形的外部边界的节点也是按顺时针方向依次连接的,其内部边界的节点则是按逆时针方向依次连接。如图21所示,该多边形由三个点集组成:外部边界,9个节点按顺时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点8为尾节点;左下角的内部边界,28个节点按逆时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点27为尾节点;左上角的内部边界,21个节点按逆时针方向依次连接,点0为首节点,点1是点0的下一个节点,…,点20为尾节点。
因此,当沿着多边形边界的节点的连接顺序进行遍历时,无论是内部边界还是外部边界,沿连接顺序方向前进时,多边形的内部位于右手位,外部位于左手位。
7、数据格式
本发明的基础数据主要有大比例尺地形图、建筑设计、施工、竣工图等,数据格式为Shapefile、Coverage、DWG、DXF等。
定义了上述技术术语后,下面对本发明的方案进行具体介绍。
1、读取和预处理步骤
建筑物的数据以Shapefile文件为例,借助ArcGIS软件进行读取和预处理。
预处理包括拓扑检查:为保证数据的正确性和完整性,须进行拓扑检查,其中包括检查多边形是否闭合,检查线段上是否存在多余点等。如图27所示,将不闭合的多边形改为闭合,如图28所示,删除了线段上的多余节点。
2、提取建筑数据的相关建模信息
1)建筑物的三维空间信息的提取
建模所需的建筑数据主要有建筑物的外部和内部边界、建筑物的高度信息等。主要有边界多边形的节点三维坐标、多边形的拓扑等,上述信息均可由建筑数据所在的Shapefile文件获取。
若建筑物边界为简单多边形,则边界节点的数据结构如表(1)所示,“多边形编号”字段表示节点所属建筑物的编号,“节点编号”字段表示节点的连接顺序编号,“x坐标”字段表示节点的X坐标,“y坐标”字段表示节点的Y坐标,“z坐标”字段表示节点的Z坐标。
多边形编号 | 节点编号 | x坐标 | y坐标 | z坐标 |
72 | 0 | 762730.549 | 2457311.199 | 5.150 |
72 | 1 | 762727.927 | 2457301.511 | 4.855 |
72 | 2 | 762729.706 | 2457299.100 | 4.855 |
72 | 3 | 762728.354 | 2457295.208 | 4.855 |
72 | 4 | 762725.433 | 2457294.431 | 4.640 |
72 | 5 | 762721.529 | 2457285.198 | 4.600 |
72 | 6 | 762718.054 | 2457286.994 | 4.600 |
72 | 7 | 762703.864 | 2457291.874 | 4.400 |
72 | 8 | 762700.023 | 2457292.594 | 4.400 |
72 | 9 | 762703.480 | 2457302.494 | 4.400 |
72 | 10 | 762706.432 | 2457301.523 | 4.600 |
72 | 11 | 762707.785 | 2457305.328 | 4.600 |
72 | 12 | 762705.205 | 2457307.459 | 4.400 |
72 | 13 | 762706.168 | 2457310.137 | 4.400 |
72 | 14 | 762709.405 | 2457310.451 | 4.600 |
72 | 15 | 762710.153 | 2457314.311 | 4.667 |
72 | 16 | 762710.841 | 2457318.057 | 4.667 |
表(1)图29中的简单多边形边界节点的数据列表
若建筑物边界为复杂多边形,则边界节点的数据结构如表(2)所示,表中一共有三段边界,其中,第1段为外部边界,有9个节点,第2段和第3段为内部边界,分别有21个点和28个点。
表(2)图30中复杂多边形的边界节点的数据列表
建筑物的高度信息分两种情况处理,一种是建筑物边界各节点有高度信息的,则存储于节点表的高度字段里;另一种则以建筑物总体平均高度表示全体节点的高度。
2)以二进制文件的形式存储建模信息
其中二进制文件的结构,如表(3)所示:
记录项 | 数值 | 数据类型 | 长度(单位:Byte) |
多边形编号 | 节点所属建筑物编号 | 整型 | 4 |
节点编号 | 节点的连接顺序编号 | 整型 | 4 |
x坐标 | 节点的X坐标 | 双精度 | 8 |
y坐标 | 节点的Y坐标 | 双精度 | 8 |
z坐标 | 节点的Z坐标 | 双精度 | 8 |
楼顶高程 | 楼顶的高程值 | 双精度 | 8 |
表(3)二进制文件结构
3、建筑物主体部分建模
基于建筑物边界的平面坐标和高程数据,进行建筑主体部分建模,实现流程如下:
假定对图31中的多边形进行主体部分建模,其节点数据如表(4)所示,具体的建模流程如图32所示。
1)从编号为0的节点开始,依次读取相邻两个节点的数据。根据节点P0和节点P1的平面坐标和楼顶高程,分别生成对应的点P0′(X0,Y0,H0)和点P1′(X1,Y1,H1);
2)分别将点P0、P0′、P1′和点P0、P1′、P1这两组点集按逆时针方向重新编号,分别构造出三角形A和三角形B,两个三角形无缝拼接起来就是一个完整的建筑物侧面;
3)遍历下一组节点,以同样的方法构造建筑物侧面,直到多边形的主体部分建模完成。
多边形编号 | 节点编号 | 点名 | x坐标 | y坐标 | z坐标 | 楼顶高程 |
0 | 0 | P0 | X0 | Y0 | Z0 | H0 |
0 | 1 | P1 | X1 | Y1 | Z1 | H1 |
0 | 2 | P2 | X2 | Y2 | Z2 | H2 |
0 | 3 | P3 | X3 | Y3 | Z3 | H3 |
表(4)图31多边形节点数据列表
若建筑物各节点的高度信息由总体平均高度表示,即各节点的楼顶高程相等,则该建筑物每一个侧面均为矩形,如图33所示。
若建筑物节点有各自的高度信息,即各节点的楼顶高程不尽相等,则该建筑物侧面的形状有可能是矩形,也有可能是不规则四边形。如图34所示。
4、楼顶部分建模
1)建模流程
建筑物楼顶部分的流程如下,如图35所示:
①判断多边形是简单多边形还是复杂多边形。如前所述,若一个多边形的节点数据中包含不少于2个节点编号等于0的多边形则为复杂多边形,否则该多边形为简单多边形。
②若多边形是简单多边形,则运用简单多边形分解的算法,将多边形转化为三角形集合;
③若多边形是复杂多边形,则先简化外部边界并除去内部边界,将复杂多边形转化成若干个简单多边形再处理。
在简单多边形和复杂多边形的分解过程中,都需要判断线段的相交以及线段中心是否位于多边形内,下面先介绍一下本发明中采用的判断方法。
一、线段相交判断
为防止多边形分解为三角形集合过程中,三角形与多边形内、外部边界相交产生分解错误,在分解过程中需要进行线段相交判断。为了减少判断线段相交的计算量,本发明先进行快速排斥实验,排除不可能相交的线段,然后对有可能相交的线段进行跨立实验,以确认线段是否相交。
①快速排斥判断
设P1=(RXmax,RYmax),P2=(RXmin,RYmin),Q1=(TXmin,TYmin),Q2=(TXmax,TYmax),线段P1P2的Envelope对象为R,线段Q1Q2的Envelope对象为T,若R与T不相交,则两线段不可能相交,如图36所示。若R与T相交,则线段P1P2与线段Q1Q2可能相交或者不相交,如图37和图38所示。Envelope对象R、T边界值列表见表(5)。
表(5)Envelope对象R、T边界值列表
R、T不相交的条件一共有四个,只要满足其中任一个条件,则线段P1P2与Q1Q2不可能相交。具体条件如下:
条件1,RXmax小于TXmin,如图39所示;
条件2,RXmin大于TXmax,如图40所示;
条件3,RYmax小于TYmin,如图41所示;
条件4,RYmin大于TXmax,如图42所示。
②跨立判断
定义:若线段P1P2跨立线段Q1Q2,则点P1,点P2分别在线段Q1Q2所在直线的两端。若线段Q1Q2跨立线段P1P2,则点Q1,点Q2分别在线段P1P2所在直线的两端。那么,当且仅当线段P1P2跨立线段Q1Q2且线段Q1Q2跨立线段P1P2时,线段P1P2与线段Q1Q2相交。
设线段P1P2,其端点坐标为P1(X1,Y1),P2(X2,Y2);线段Q1Q2,其端点坐标为Q1(X3,Y3),Q2(X4,Y4)。
向量Q1Q2=(X4-X3,Y4-Y3),向量Q1P1=(X3-X1,Y3-Y1),设向量Q1Q2与向量Q1P1的向量积S1=(X4-X3)*(Y3-Y1)-(X3-X1)*(Y4-Y3)。若S1<0,点P1在线段Q1Q2的右侧;若S1>0,则点P1在线段Q1Q2的左侧;若S1=0,则点P1在线段Q1Q2所在直线上。
同理可得,设向量Q1P2=(X3-X2,Y3-Y2),向量Q1Q2与向量Q1P2的向量积S2=(X4-X3)*(Y3-Y2)-(X3-X2)*(Y4-Y3),若S2<0,则点P2在线段Q1Q2的右侧;S2>0,则点P2在线段Q1Q2的左侧;若S2=0,则点P2在线段Q1Q2所在直线上。
若S1>0且S2<0,即P1在线段Q1Q2的左侧且P2在线段Q1Q2的右侧,如图43所示;或者若S1<0且S2>0,即P1在线段Q1Q2的右侧且P2在线段Q1Q2的左侧;即S1*S2<0,则线段P1P2跨立线段Q1Q2。
设向量P1P2=(X1-X2,Y1-Y2),向量P1Q1=(X1-X3,Y1-Y3),向量P1Q2=(X1-X4,Y1-Y4),向量P1P2与向量P1Q1的向量积S3=(X1-X2)*(Y1-Y3)-(X1-X3)*(Y1-Y2),向量P1P2与向量P1Q2的向量积S4=(X1-X2)*(Y1-Y4)-(X1-X4)(Y1-Y2)。若S3*S4<0,则线段Q1Q2跨立线段P1P2。
当S1*S2<0且S3*S4<0,即线段P1P2跨立线段Q1Q2的同时线段Q1Q2跨立线段P1P2,则线段P1P2与线段Q1Q2相交,如图44所示。
二、判断点是否在多边形内
定义:从目标点出发引一条射线,若这条射线和多边形所有边的交点数目为奇数个,则说明该目标点在多边形内部;若是偶数个,则说明该目标点在多边形外部。
设目标点P(X,Y),
i.求多边形的Envelop对象,记录下多边形的X坐标的最大值Xmax;
ii.设线段L,其端点坐标为(X,Y),(Xmax,Y);
iii.求线段L与多边形各线段的相交次数;
iv.判断相交次数是奇数还是偶数,若是奇数,则返回目标点P在多边形内部;若是偶数,则返回目标点P在多边形的外部。
上面已经详细介绍了线段是否相交以及线段连线的中心是否位于多边形内的方式。下面,本发明在采用上述判断方法的基础上,具体描述了如何实现简单多边形以及复杂多边形的分解方法。
2)简单多边形分解
若输入的多边形是简单多边形,将其转化为三角形集合的流程如图47所示。以图48中的多边形为例,其中图48中的多边形节点列表如表(6)所示,图48中的简单多边形分解流程如图49所示。
多边形编号 | 节点编号 | x坐标 | y坐标 | z坐标 |
0 | 0 | 762519.058 | 2457552.854 | 20.000 |
0 | 1 | 762531.394 | 2457543.073 | 20.000 |
0 | 2 | 762479.674 | 2457487.843 | 20.000 |
0 | 3 | 762468.250 | 2457498.267 | 20.000 |
0 | 4 | 762472.036 | 2457502.325 | 20.000 |
0 | 5 | 762477.655 | 2457497.092 | 20.000 |
0 | 6 | 762488.149 | 2457508.298 | 20.000 |
0 | 7 | 762482.479 | 2457513.635 | 20.000 |
0 | 8 | 762488.759 | 2457520.339 | 20.000 |
0 | 9 | 762494.378 | 2457515.107 | 20.000 |
0 | 10 | 762504.925 | 2457526.281 | 20.000 |
0 | 11 | 762499.337 | 2457531.661 | 20.000 |
0 | 12 | 762505.537 | 2457538.323 | 20.000 |
0 | 13 | 762511.270 | 2457533.113 | 20.000 |
0 | 14 | 762521.769 | 2457544.272 | 20.000 |
0 | 15 | 762516.154 | 2457549.566 | 20.000 |
表(6)图48多边形节点列表
3)复杂多边形分解
对于复杂多边形,则需先简化外部边界,在不改变内部边界的建模信息的基础上,使外部边界分解为若干个简单多边形。然后对剩余的简化后的复杂多边形进行除去内部边界算法,使其内部边界与外部边界通过连线进行合并,已达到消除内部边界的效果。除去内部边界后的多边形,则通过简单多边形分解的算法将其转化为若干个三角形,最后输出到三维引擎中。
首先,对于复杂多边形,使用简化外部边界的方法,其实现的过程如图50所示。
进而,对于简化外部边界后的复杂多边形,使用除去内部边界的方法,其实现的过程如图51所示。
例如以图52为例。图52的边界节点数据如表(7)所示。
多边形编号 | 节点编号 | x坐标 | y坐标 | z坐标 |
0 | 0 | 762660.366 | 2457590.677 | 20.000 |
0 | 1 | 762770.739 | 2457569.384 | 20.000 |
0 | 2 | 762894.976 | 2457590.677 | 20.000 |
0 | 3 | 762894.976 | 2457428.319 | 20.000 |
0 | 4 | 762660.366 | 2457428.319 | 20.000 |
1 | 0 | 762716.352 | 2457545.430 | 20.000 |
1 | 1 | 762716.352 | 2457512.958 | 20.000 |
1 | 2 | 762846.987 | 2457512.958 | 20.000 |
1 | 3 | 762846.987 | 2457545.430 | 20.000 |
表(7)图52所示的复杂多边的边界节点
首先对图52所示的图形进行外部边界的简化。选取外部边界上不相邻的两个点,判断两点连线是否交于内或外边界以及中点是否在多边形内部。
i.第一点选取编号为0的点,第二点选取编号为2的点(编号为1的点与0相邻,故不选取)。如图53所示:由于中点在多边形外,所以不能相连,选择下一组点。
ii.第一点选取编号为0的点,第二点选取编号为3的点。如图54所示:由于交于内边界,所以不能相连,选择下一组点;
iii.第一点选取编号为1的点,第二点选取编号位3的点。如图55所示:由于交于内边界,所以不能相连,选择下一组点;
直到有两点连线满足不交于内外边界且中点在多边形内的条件,连接直线将多边形一分为二。
若外部边界上任意两个不相邻的点的连线都交于内外边界或者中点在多边形外部,说明外部边界已无法进行简化,直接进入除去内部边界流程:
在外部边界上取一点,找出与之最近的内部边界上的点,判断两点连线是否交于内或外边界。不相交则连接两点并重新排列多边形点集,构造出新的多边形边界;相交则在外部边界上取下一个点进行上述判断。
选外部边界上编号为0的点,遍历所有内部边界上的点。找出与点0距离最小的点(即点0’)
两点连线不交于内外边界,所以连接两点,如图56所示。
此时的多边形外边界有一条线连接某一内边界,应在该内边界和外边界上找出另一条端点不同的线将多边形彻底分为两部分。
i.第一点选取编号为1的点,第二点选取编号为1’的点(编号为0的点与0’的点已连接,故不选取)。如图57所示:由于交于内边界,所以不能相连,选择下一组点
ii.第一点选取编号为1的点,第二点选取编号为2’的点。如图58所示:由于交于内边界,所以不能相连,选择下一组点
iii.第一点选取编号为1的点,第二点选取编号位3’的点。如图59所示:两点连线不交于内外边界,所以连接两点。
两条连线将多边形分为了两部分:(0,1,3’,0’,0)围成的多边形和(1,2,3,4,0,0’,1’,2’,3’,1)围成的多边形,对新生成的多边形进行重新编号以便进行下一步处理,如图60所示。
此时的多边形已经没有了内部边界,可以进行简单多边形的分解算法。选择外边界上不相邻的两个点,若连线不与外边界相交且连线中点在多边形内部,则连接两线,将多边形一分为二,形成两个新的多边形。然后对新的两个多边形继续进行简化,直至全部分解为三角形为止,如图61所示。
最终将多边形分解为若干个三角形输出到三维引擎中进行建模。图62即为分解后的多边形。
下面举例说明上述复杂多边形的分解过程,以图63所示的屋顶为例。
首先对图63所示的图形进行外部边界的简化,选择外边界上不相邻的两个点,若连线不与内或外边界相交且连线中点在多边形内部,则连接两线,将多边形一分为二,形成两个新的多边形。然后判断每个内部边界在哪个部分内,并重新排列多边形点集,如图64所示。
然后对新生成的多边形继续进行简化,直至外边界无法简化为止,如图65所示。
此时的多边形外边界已经无法简化,接下来进行除去内部边界的流程:在外部边界上取一点,找出与之最近的内部边界上的点,判断两点连线是否交于内或外边界。若相交则继续取外部边界上的下一个点,并找最近点。若不相交则连接两点。
取一个含有内边界的新生成的多边形为例:
在外部边界上取点0,然后遍历所有内部边界上的点。找出与点0距离最小的点2’,两点连线不交于内外边界,所以连接两点,如图66所示。
此时的多边形外边界有一条线连接某一内边界,应在该内边界和外边界上找出另一条端点不同的线将多边形彻底分为两部分。
i.第一点选取编号为1的点,第二点选取编号为0’的点(编号为0的点与2’的点已连接,故不选取),如图67所示:由于交于内边界,所以不能相连,选择下一组点;
ii.第一点选取编号为1的点,第二点选取编号为1’的点。如图68所示:两点连线不交于内外边界,所以连接两点。
两条连线将多边形分为了两部分:(0,1,1’,2’,0)围成的多边形和(1,2,3,0,2’,3’,4’,5’,0’,1’,1)围成的多边形,对新生成的多边形进行重新编号以便进行下一步处理,如图69所示。
然后对新生成的多边形进行简化外部边界处理,结果如图70所示。
重复进行除孔及简化外部边界操作,直至全部分解为三角形为止,如图71所示。
最终将多边形全部分解为若干个三角形输出到三维引擎中进行建模,图72即为分解后的多边形。
5、平顶型屋顶建模
按屋顶部分的高程值,将屋顶分成两类,高程值相同的平顶型屋顶和高程值不同的非平顶型屋顶进行建模;对于平顶型屋顶,运用建筑物边界的平面坐标和屋顶高程数据,通过多边形分解算法,将复杂多边形分解为无缝连接的三角形集合,并确定三角形的绘制顺序进行建模。
6、非平顶型屋顶建模
按照高程值的不同分层,分别建模,各层顶部多边形与平顶型屋顶类似,也是将建筑物边界分解为三角形集合来建模。对于各层的立面与主体部分建模类似,也是利用平面坐标和高程数据建模。
如图73所示,图(a)中1、2、3、4色部分与其他部分有不同的高度值。本发明将分层进行建模,结果如图(b)所示。
综上可知,通过采用本发明的建模方法,实现了对复杂建筑物在不需要人工干预的基础上的高精度建模,本发明的方法既精确描述了复杂建筑物的细节,又不需要增加人工干预,实现高效率高精度的建模。
以上,对本发明的实施方式进行了说明。但是,本发明不限定于上述实施方式。凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种复杂建筑物高精度自动建模的方法,其特征在于,包括以下步骤:
读取和预处理步骤:读取所述建筑物的建筑数据并进行预处理;
提取步骤:对所述预处理后的建筑数据进行提取,获得用于建模的建模信息;
建模步骤:利用所述提取步骤获得的用于建模的建筑信息进行所述建筑物的主体建模以及所述建筑物的屋顶建模;其中所述建模步骤中进行所述建筑物的主体建模时,包括以下步骤:
1-1)识别所述建筑物主体的外部边界;
1-2)依次读取所述外部边界中相邻两个节点的三维坐标和所述节点对应的所述建筑物高程数据;
1-3)根据所述相邻两个节点的平面坐标和各自的高程数据生成新的两个节点;
1-4)所述新生成的两个节点与所述相邻的两个节点按照逆时针方向编号后构造出两个三角形;
1-5)将所述构造出的两个三角形无缝拼接得到所述建筑物的一个侧面;
1-6)遍历所述建筑物的外部边界的其他节点,重复上述步骤1-1)至1-5),得到所述建筑物主体的建模信息;
其中所述建筑物的主体建模是基于从所述建模信息中获取的所述建筑物边界的平面坐标和高程数据进行建模;
其中所述建模是将所述建模信息中的建筑边界的节点的绘制顺序进行重新排列后输入到三维引擎进行建模;
其中所述建筑物的屋顶建模,首先根据从所述建模信息中获取的所述建筑物屋顶边界的平面坐标对屋顶形状进行判定,根据判定结果对所述屋顶边界进行处理,在不增加所述屋顶边界的节点的基础上根据所述屋顶形状以及高程数据进行所述建筑物的屋顶建模。
2.如权利要求1所述的方法,其中所述读取和预处理步骤中,利用特定软件读取包括建筑数据的文件来获得建筑数据;所述预处理包括对所述读取的建筑数据进行拓扑检查、合并相近点、规范化对象属性以及高程赋值。
3.如权利要求1所述的方法,其中所述提取步骤中,用于建模的建模信息包括所述建筑物外部和内部边界的节点的三维坐标、所述建筑物的高程信息。
4.如权利要求1所述的方法,进一步包括存储步骤,将所述提取步骤中获得的所述用于建模的建模信息以二进制文件的形式进行存储。
5.如权利要求1所述的方法,其中所述建模步骤中进行所述建筑物的屋顶建模时,包括以下步骤:
6-1)识别所述建筑物的屋顶边界;
6-2)判定所述建筑物的屋顶边界是简单多边形还是复杂多边形;
6-3)如果所述建筑物的屋顶边界是简单多边形,则采用简单多边形分解方法将所述简单多边形分解为多个三角形得到所述屋顶的建模信息;
6-4)如果所述建筑物的屋顶边界是复杂多边形,则采用复杂多边形分解方法将所述复杂多边形分解为多个简单多边形,再利用步骤6-3)中的简单多边形分解方法得到所述屋顶的建模信息。
6.如权利要求5所述的方法,其中所述简单多边形分解方法包括以下步骤:
7-1)判断所述简单多边形的节点个数是否等于3,
72)如果是,则所述多边形为三角形,将三角形的建模信息输入到三维引擎;
7-3)如果否,则遍历所述简单多边形的所有节点;
7-4)选择所述简单多边形的外部边界上任意两个不共线的节点;
7-5)当任意两个不共线节点之间的连线满足以下条件:(I)不与所述外部边界相交、(II)连线的中点位于所述多边形内部时,则连接上述两个节点;如果不满足上述条件则继续遍历下一组不共线的点直到找到满足上述条件的两个不共线的节点;
7-6)上述两个节点的连线将所述多边形分割为两部分得到两个新的简单多边形;
7-7)重复执行上述步骤7-1)至7-6)直到所有分割得到的简单多边形的节点个数均为3。
7.如权利要求5所述的方法,其中所述复杂多边形分解方法包括简化所述复杂多边形的外部边界和简化所述复杂多边形的内部边界,所述简化所述复杂多边形的外部边界的方法包括以下步骤:
8-1)首先对所述复杂多边形的外部边界进行简化,在不改变所述复杂多边形的内部边界的建模信息的基础上,将所述复杂多边形的外部边界分解为若干个简单多边形;
8-2)再对剩余的简化后的复杂多边形进行除去内部边界,使其内部边界与外部边界通过连线进行合并,得到除去内部边界的简单多边形;
8-3)再利用简单多边形分解的方法将上述得到的简单多边形转化为三角形得到建模信息。
8.如权利要求7所述的方法,其中所述简化所述复杂多边形的外部边界包括以下步骤:
9-1)判断所述复杂多边形的外部边界的节点个数是否等于3;
9-2)如果是,则对所述多边形执行去除内部边界;
9-3)如果否,则遍历所述外部边界的所有节点;
9-4)选择所述复杂多边形的外部边界上任意两个不共线的节点;
9-5)如果所述两个不共线的节点的连线同时满足以下条件:(I)中点位于多边形内部、(II)不与所述复杂多边形的外部边界相交、(III)不与所述复杂多边形的内部边界相交,则连接上述两个节点,如果不满足上述条件,则继续遍历下一组不共线的点直到找到满足上述条件的两个不共线的节点;如果所述外部边界的全部节点遍历完成后都没有满足上述条件的节点,则对所述多边形执行去除内部边界;
9-6)上述连接的两个节点之间连线将所述复杂多边形的外部边界分割为两部分;
9-7)遍历所述复杂多边形的所述内部边界的所有节点,判断所述内部边界的所有节点位于上述分割得到的两部分中的哪一部分;
9-8)根据所述内部边界的节点的位置将所有节点重新排列,构造得到两个新的多边形;
9-9)判断所述两个新的多边形是否含有内部边界,如果有,则继续执行上述复杂多边形外部边界简化方法;
9-10)如果没有外部边界,则该新的多边形为简单多边形;
9-11)继续执行所述简单多边形分解方法。
9.如权利要求7所述的方法,其中对所述复杂多边形除去内部边界的方法包括以下步骤:
10-1)选择所述复杂多边形外部边界上的任意一个节点;
10-2)遍历所述复杂多边形内部边界上所有节点,找出与上述选择的外部边界上节点距离最近的节点;
10-3)如果两个节点的连线同时满足以下条件:(I)不与所述复杂多边形的所述外部边界相交、(II)不与所述复杂多边形的所述内部边界相交,则将上述两个节点相连;如果不满足上述条件,则继续遍历所述内部边界的节点直到找到满足上述条件的点;
10-4)上述连接的两个节点之间连线将所述复杂多边形的外部边界和内部边界合并为新的外部边界;
10-5)重新排列所述复杂多边形的所述节点,构造出新的复杂多边形;
10-6)判断所述新的复杂多边形是否含有内部边界;
10-7)如果有,则所述新的多边形为复杂多边形,将对所述新的多边形执行所述外部边界简化方法;
10-8)如果没有,则所述新的多边形为简单多边形,将对所述新的多边形执行所述简单多边形分解方法。
10.如权利要求1所述的方法,其中所述建筑物的屋顶建模时,当所述建筑物的高程数据不同时,则按照高程值的不同对所述建筑物的楼顶分层,每层分别建模。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610563422.9A CN106683167B (zh) | 2016-07-19 | 2016-07-19 | 复杂建筑物高精度模型自动建模方法 |
US15/653,576 US10504284B2 (en) | 2016-07-19 | 2017-07-19 | Method for automatic modeling of complex buildings with high accuracy |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610563422.9A CN106683167B (zh) | 2016-07-19 | 2016-07-19 | 复杂建筑物高精度模型自动建模方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106683167A CN106683167A (zh) | 2017-05-17 |
CN106683167B true CN106683167B (zh) | 2020-03-03 |
Family
ID=58839229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610563422.9A Active CN106683167B (zh) | 2016-07-19 | 2016-07-19 | 复杂建筑物高精度模型自动建模方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10504284B2 (zh) |
CN (1) | CN106683167B (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062793B (zh) * | 2017-12-28 | 2021-06-01 | 百度在线网络技术(北京)有限公司 | 基于高程的物体顶部处理方法、装置、设备和存储介质 |
CN108363866B (zh) * | 2018-02-09 | 2021-05-07 | 广州大学 | 基于建筑图纸的地板自动识别方法 |
CN108229073B (zh) * | 2018-02-09 | 2021-05-14 | 广州大学 | 基于建筑图纸的阳台自动识别方法 |
CN108363867B (zh) * | 2018-02-09 | 2021-04-20 | 广州大学 | 基于建筑图纸的建筑物自动建模方法 |
CN113101668B (zh) * | 2018-04-27 | 2024-05-28 | 网易(杭州)网络有限公司 | 虚拟场景生成方法、装置、存储介质及电子设备 |
CN109101674B (zh) * | 2018-06-19 | 2022-11-04 | 北京农业信息技术研究中心 | 一种复杂线性模型规则化建模方法及系统 |
CN110727972A (zh) * | 2018-06-26 | 2020-01-24 | 中国电力科学研究院有限公司 | 一种基于建筑信息化模型的输电塔自动建模方法及系统 |
CN109191561B (zh) * | 2018-07-12 | 2022-09-13 | 中山大学 | 面向交通环境污染模拟的城市三维建筑物快速建模方法 |
CN110246173B (zh) * | 2018-08-14 | 2023-11-03 | 浙江大华技术股份有限公司 | 一种判断形状区域的方法和装置 |
CN109544687B (zh) * | 2018-11-21 | 2023-03-31 | 南京师范大学 | 一种定向分层分户图扩展方法 |
CN112129314A (zh) * | 2019-06-25 | 2020-12-25 | 上海擎感智能科技有限公司 | 一种地图显示方法及装置 |
CN112464326B (zh) * | 2019-09-06 | 2023-07-21 | 久瓴(上海)智能科技有限公司 | 识别屋面和墙体的方法、装置、计算机设备和存储介质 |
CN110675471B (zh) * | 2019-10-15 | 2023-10-03 | 深圳前海微众银行股份有限公司 | 节点连线的生成方法、装置、设备及存储介质 |
CN110781547B (zh) * | 2019-10-24 | 2022-12-09 | 杭州电子科技大学上虞科学与工程研究院有限公司 | 一种基于中轴线的三维构筑物加固方法 |
CN111127653B (zh) * | 2019-11-22 | 2023-06-16 | 久瓴(江苏)数字智能科技有限公司 | 正置式平屋面生成方法、装置、计算机设备和存储介质 |
CN111079263B (zh) * | 2019-11-22 | 2023-06-16 | 久瓴(江苏)数字智能科技有限公司 | 建筑主体结构生成方法、装置、计算机设备和存储介质 |
CN111159795B (zh) * | 2019-11-22 | 2023-05-09 | 久瓴(江苏)数字智能科技有限公司 | 玻璃幕墙生成方法、装置、计算机设备和存储介质 |
US11423610B2 (en) * | 2019-11-26 | 2022-08-23 | Applied Research Associates, Inc. | Large-scale environment-modeling with geometric optimization |
CN111179375B (zh) * | 2019-12-17 | 2023-12-01 | 深圳市华阳国际工程设计股份有限公司 | 建筑承台的轮廓图形的自动生成方法、装置及计算机存储介质 |
CN111275820B (zh) * | 2020-01-15 | 2023-09-19 | 深圳市华橙数字科技有限公司 | 基于二维平面绘制三维墙体方法、装置、终端和存储介质 |
US11494977B2 (en) * | 2020-02-28 | 2022-11-08 | Maxar Intelligence Inc. | Automated process for building material detection in remotely sensed imagery |
CN112256703B (zh) * | 2020-10-23 | 2023-05-23 | 重庆同汇勘测规划有限公司 | 一种基于ArcGIS快速输出点云精度报告的方法 |
CN112837395B (zh) * | 2020-12-25 | 2023-03-28 | 佛山欧神诺云商科技有限公司 | 一种快速构建户型结构的建模方法、电子设备、存储介质 |
US20220244833A1 (en) * | 2021-01-22 | 2022-08-04 | Primitive LLC | Interactive 3d roof model |
CN112989469B (zh) * | 2021-03-19 | 2022-06-10 | 深圳市智绘科技有限公司 | 建筑物屋顶模型的构建方法、装置、电子设备及存储介质 |
CN113066096A (zh) * | 2021-04-06 | 2021-07-02 | 长沙证通云计算有限公司 | 一种基于改进的蚁群聚类算法的边缘检测方法及系统 |
CN113376953B (zh) * | 2021-05-20 | 2022-09-27 | 达闼机器人股份有限公司 | 物体投影重建系统 |
CN114417452B (zh) * | 2021-12-16 | 2024-08-16 | 深圳市万翼数字技术有限公司 | 建筑信息模型的处理方法及相关装置 |
CN114863020B (zh) * | 2022-04-29 | 2023-03-28 | 北京工业大学 | 三维模型构建方法、装置、电子设备及存储介质 |
CN114882192B (zh) * | 2022-07-08 | 2022-10-11 | 浙江国遥地理信息技术有限公司 | 一种建筑立面的分割方法、装置、电子设备以及存储介质 |
CN115187589B (zh) * | 2022-09-07 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 多边形修正及生成方法、装置、设备及可读存储介质 |
CN117952062A (zh) * | 2024-01-15 | 2024-04-30 | 北京智芯仿真科技有限公司 | 一种简化走线的集成电路网表信息的快速确定方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101317199A (zh) * | 2005-10-11 | 2008-12-03 | 法国电信公司 | 基于建筑物屋顶的3d表示的屋顶和建筑物结构而传输所述结构的方法、设备和程序 |
CN101655993B (zh) * | 2008-08-20 | 2012-01-11 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN103838829A (zh) * | 2014-02-18 | 2014-06-04 | 中国林业科学研究院资源信息研究所 | 一种基于分层次边界拓扑搜索模型的栅格转矢量系统 |
CN103886640A (zh) * | 2014-03-26 | 2014-06-25 | 中国测绘科学研究院 | 一种建筑物的三维模型的获取方法及系统 |
CN105758386A (zh) * | 2014-12-15 | 2016-07-13 | 广州蓝图地理信息技术有限公司 | 一种激光点云与航空影像集成的建筑物三维建模方法 |
CN106600680A (zh) * | 2015-10-20 | 2017-04-26 | 星际空间(天津)科技发展有限公司 | 一种建筑物体框模型批量精细三维建模方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006121457A2 (en) * | 2004-08-18 | 2006-11-16 | Sarnoff Corporation | Method and apparatus for performing three-dimensional computer modeling |
US20150187130A1 (en) * | 2011-02-10 | 2015-07-02 | Google Inc. | Automatic Generation of 2.5D Extruded Polygons from Full 3D Models |
US8874454B2 (en) * | 2013-03-15 | 2014-10-28 | State Farm Mutual Automobile Insurance Company | Systems and methods for assessing a roof |
US10013507B2 (en) * | 2013-07-01 | 2018-07-03 | Here Global B.V. | Learning synthetic models for roof style classification using point clouds |
-
2016
- 2016-07-19 CN CN201610563422.9A patent/CN106683167B/zh active Active
-
2017
- 2017-07-19 US US15/653,576 patent/US10504284B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101317199A (zh) * | 2005-10-11 | 2008-12-03 | 法国电信公司 | 基于建筑物屋顶的3d表示的屋顶和建筑物结构而传输所述结构的方法、设备和程序 |
CN101655993B (zh) * | 2008-08-20 | 2012-01-11 | 武汉大学 | 复杂建筑物三维模型多分辨率建模方法 |
CN103838829A (zh) * | 2014-02-18 | 2014-06-04 | 中国林业科学研究院资源信息研究所 | 一种基于分层次边界拓扑搜索模型的栅格转矢量系统 |
CN103886640A (zh) * | 2014-03-26 | 2014-06-25 | 中国测绘科学研究院 | 一种建筑物的三维模型的获取方法及系统 |
CN105758386A (zh) * | 2014-12-15 | 2016-07-13 | 广州蓝图地理信息技术有限公司 | 一种激光点云与航空影像集成的建筑物三维建模方法 |
CN106600680A (zh) * | 2015-10-20 | 2017-04-26 | 星际空间(天津)科技发展有限公司 | 一种建筑物体框模型批量精细三维建模方法 |
Non-Patent Citations (2)
Title |
---|
Automatic building extraction from DEMs using an object approach and application to the 3D-city modeling;Florent Lafarge 等;《ISPRS Journal of Photogrammetry and Remote Sensing》;20080531;第365-381页 * |
利用GIS数据半自动生成3D建筑模型;夏晓飞等;《计算机与数字工程》;20060920;第49-51页 * |
Also Published As
Publication number | Publication date |
---|---|
US10504284B2 (en) | 2019-12-10 |
CN106683167A (zh) | 2017-05-17 |
US20180025541A1 (en) | 2018-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106683167B (zh) | 复杂建筑物高精度模型自动建模方法 | |
CN109711018B (zh) | 一种二维到三维的户型设计方法 | |
US8860723B2 (en) | Bounded simplification of geometrical computer data | |
EP1881458B1 (en) | Computer-implemented process for creating a parametric surface | |
JP4381743B2 (ja) | 境界表現データからボリュームデータを生成する方法及びそのプログラム | |
US7557803B2 (en) | Method, computer program product and data structure for representing two- or three-dimensional object modeling | |
CN109377561A (zh) | 一种基于共形几何的数模表面网格生成方法 | |
US8600713B2 (en) | Method of online building-model reconstruction using photogrammetric mapping system | |
CN102194253A (zh) | 一种面向三维地质层面结构的四面体网格生成方法 | |
US20240153123A1 (en) | Isogeometric Analysis Method Based on a Geometric Reconstruction Model | |
CN103559374A (zh) | 一种多子网格模型上进行面分裂型曲面细分的方法 | |
CN112634455B (zh) | 一种利用切割三角面片应用于三维模型棱线修复方法 | |
CN110032771A (zh) | 一种顾及局部细节特征的露天煤矿dem精确裁剪方法 | |
CN109872390B (zh) | 一种海量三维模型的组织方法 | |
EP2663965B1 (en) | Direct rendering of cad models on the gpu | |
KR101552827B1 (ko) | 3차원 객체 모델의 분할 방법 | |
CN102496179A (zh) | 一种三维场景的裁剪方法 | |
CN110675323B (zh) | 一种三维地图语义处理方法、系统、设备及计算机介质 | |
CN110533739B (zh) | 一种地图网格的成图方法 | |
CN117611768B (zh) | 一种基于cad图纸的道路参数化建模方法 | |
CN105894553B (zh) | 一种基于格栅选择的街巷空间形态布局方法 | |
CN111898687B (zh) | 一种基于狄隆涅三角剖分的雷达反射率数据融合方法 | |
Zhang et al. | Piecewise B-spline surfaces fitting to arbitrary triangle meshes | |
CN114693869B (zh) | 一种基于半边半面数据结构的3d打印实体模型生成方法 | |
Liu et al. | Shape from silhouette outlines using an adaptive dandelion model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |