1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 空间数据模型之从CAD到BIM

空间数据模型之从CAD到BIM

时间:2023-09-07 02:11:15

相关推荐

空间数据模型之从CAD到BIM

凌云时刻

编者按:本文作者曾志明,花名攀爬。北京师范大学地理学学士,中科院地理所地理信息系统(GIS)博士。从事GIS基础软件开发,其参与开发的GIS产品曾荣获国家二等奖/北京市一等奖/GIS行业特等奖,评为正高职称。4月入职阿里巴巴集团,负责阿里云GIS能力建设。

GIS作为一门采集、管理、表达空间地物的学问,其核心是空间对象模型,即如何看待需要被管理的空间地物,并用适当的数据结构予以表达,从而实现对该空间地物的存储/分析和绘制等能力。

GIS最入门的概念就是区分矢量和栅格,前者用离散的眼光来看待地物,即地物是一个个的个体,而栅格用连续的方式来看待地物,即地物是连续不可分割的。下图很好的表达了这两者的区别。由于本文并非专门科普矢量与栅格,这里就不展开论述了。

图:矢量与栅格的对比

对于空间数据模型,强烈建议阅读《Modeling Our World》一书。此书在GIS领域,个人认为是圣经一般的存在。貌似现在也有了中文版本,名字为《为我们的世界建模》。不过条件允许的情况下,还是建议能阅读英文原著。

在GIS发展早期,由于数据编辑能力不足,故而很多测绘单位都是采用CAD软件来采集数据。因此很多原始的空间数据都是DGN/DWG/DXF格式的。在CAD软件中,为了采集的效率和存储压缩等因素考虑,很多都是采用参数化的形式来存储空间数据。例如圆心和半径来表达一个圆,三个点表达一个圆弧,还有B样条曲线和Cardinal曲线等等。

这样的数据作为地图绘制固然OK,但要进入到GIS软件中进行空间分析,则存在不足,例如一个扇形被切割后,很难继续用参数化的形式来表达结果。这样势必就要求在GIS中,用一种更加通用的方式来存储。这种通用的方式其实也很简单粗暴,就是根据精度设置,采用间隔的离散点来存储中间的节点。

只要间隔越小,中间的采样点越多,最后的计算精度也是能有保证的。最大的不足在于经过如此处理后,就无法再直接根据圆心和半径的调整来修改图形的形状了。为了兼容这类数据和要求,主流GIS软件也会支持参数化的空间对象,绘制的时候在内存中转化为离散点,在分析的时候再转化为线面。

图:圆弧转化为离散点

图:SuperMap直接打开CAD数据

采用离散点的方式来存储线/面数据,又可以分为允许自相交和不允许自相交两种模式。对于自相交的数据,在图形绘制的时候是没有任何问题的,甚至包括如下图的五角星都是可以顺利绘制的。但在空间计算时,则大多都要求不能存在自相交的情况。那么,对于在允许存在自相交的GIS软件中,在调用这些空间分析功能前,会做相应的检查和数据处理,以保证后续的计算是可行的。

图:自相交的空间对象(五角星)

简单总结一下,对于二维矢量数据,可以分为:CAD的参数化对象,自相交对象和不自相交对象三种情况。参数化对象适合编辑数据,很多空间分析算法只适合不自相交的对象。对于GIS软件,则多采用参数化和非参数化两种结构都支持的模式,以便根据实际情况来予以选择使用。

需要补充说明的是,为了适应房地产等对数据精度要求非常高的行业需要,GIS软件也在着手把参数化与非参数化两者融合在一起。即一部分是点串,一部分是弧段。我们可以设想一个带有阳台的房间,阳台的外围是一个弧面,那么采用参数化和非参数化结合的方式,则能精确的计算面积(这个对房产很重要),还便于进行编辑修改。

随着技术的发展,GIS从二维升级到三维,数据模型和存储结构也相应随之升级。对应为CAD软件升级为BIM软件、自相交对象升级为Mesh结构、不自相交对象升级为半边结构,分别简要说明如下:

在Revit等BIM软件中,为了构建和编辑三维对象方便,可采用参数化的方式来构建,例如采用长宽高来设置墙体,用圆和高度来设置柱子。这样后续调整,也只需要修改对应的参数数值即可。当然,更复杂的三维对象,是采用多种参数化三维单件之间的组合来完成的;这种结构的术语为:实体几何模型,Constructive Solid Geometry,简称:CSG。

图:BIM参数化建模

而在三维GIS软件中,为了便于三维渲染,则多采用Mesh这样能直接传递给OpenGL进行三维绘制的三角面片的数据结构。

图:适合三维渲染的Mesh结构

对于三维模型之间的并交差等计算,则要求三维模型数据必须满足二维流形,即一条边最多只能用在两个面,可以简单理解为不能存在三维空间的自相交。无论是三角面片的Mesh结构,还是PostGIS的多面体结构,都无法保证三维模型是符合二维流形要求的,而半边结构则可以从数据结构本身来保证这一要求。对于半边结构的详细说明,可参考优酷视频:/v_show/id_XNDM4MjgwMTQ2MA==.html

图:适合三维布尔运算的半边结构

在当前主流三维GIS中,由于一开始更多是承担三维渲染的角色,故而一般都是采用Mesh结构。BIM等建模软件为了制作和编辑模型方便,则会采用参数化结构。而CGAL作为计算几何软件库,在做三维模型的布尔运算前,会要求转化为半边结构进行计算。

从参数化结构转化为Mesh结构,是单向的;而Mesh结构与半边结构,则是可以相互转化的。整个流程为:BIM建模软件(参数化结构)--> 三维GIS(Mesh结构)<--> 三维布尔运算(半边结构),当然,有些Mesh结构的数据由于不符合二维流形的要求,存在无法转化为半边结构,这部分则会被舍弃掉。

对于未来三维GIS的发展,或早或晚都会引入参数化结构,以更好地兼容BIM等数据,并以此增加对三维模型的编辑能力。预计也会引入半边结构,以提高在三维空间分析时的效率,避免数据的来回隐性转化。

到底选择哪种结构,选择权交给用户,由用户根据当前应用的阶段来确定,并在需要时进行结构的转化。至于是否能有一统天下的三维数据结构,这就有待从理论到实践的重大突破了。

本文仅简单论述了二维和三维矢量数据结构。表达连续性的栅格/TIN/TIM(不规则多面体)等更多内容,在后续的文章中再予以阐述。

你可能还想看

1.阿里云技术专家:大型团队如何从0到1自建SRE体系

2. 阿里云李飞飞:什么是云原生数据库

3. 阿里云祝顺民:因云而生的云原生网络

4. 阿里云马涛:什么是操作系统的云原生?

5. 阿里云张毅萍:构建边缘云全站加速网络体系

END

每日收获前沿技术与科技洞见

投稿及合作请联系邮箱:lingyunshike@

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。