从BIM到GIS(中级)—IFC LOD300到LOD4 CityGML

本文档详细介绍了如何将IFC LOD300模型转换为CityGML LOD4,包括创建父/子查询、构建建筑物、转换几何、获取祖父母ID、设置CityGML标准属性等步骤,提供了具体的转换工作流程和工具使用说明。
摘要由CSDN通过智能技术生成

 

介绍

IFCCityGML都具有分层数据结构。但是,IFC的结构更为复杂,并且包含CityGML不需要的中间要素。例如,在IFC中,“门”是“开口”的子类,而“开口”又是“墙”的子类,而在CityGML中,“门”是“墙”的子类。

同样,要素的分组也有所不同。例如,部分windows stairs 要素包含在IFCMember要素中,在转换为CityGML时必须添加到其父级元素中。

本示例说明了如何从高细节IFC模型转换为细节水平(LOD)为4CityGML。该工作空间足够全面,可以处理大多数建筑IFC数据集。

 

资料下载

本练习将使用来自Vectorworks网站的DC Riverside Building LOD 300 IFC文件。

链接:https://pan.baidu.com/s/1_VJQBz6BNCFmBIJDloyfJQ 
提取码:2020

 

使用说明

由于该工作空间非常复杂,而本教程是一个简单的概述。有关参数的详细信息,请打开工作区查看关键参数。

 

源数据

该工作空间使用DC Riverside Building LOD 300 IFC文件。

Solibri Model Viewer中查看 DC_Riverside_Bldg_LOD_300.ifc

 

1部分:创建父/子查询

IFC要素拥有指向其父要素的链接,但是要删除不需要的中间要素(如“开口”),所以我们还需要指向祖级要素的链接。为此,我们使用两个单独的Industry Foundation Class STEPIFC)读模块。第一个读模块读取所有IFC要素,并设置图层名称和以父ID作为变量的查找表,由于该读模块不使用IFC几何图形,因此可以快速运行。FME顺序运行其读模块,以便该读模块完成操作,并且在第二个读模块运行之前完全设置好变量。

创建父/子查找表

 

2部分:创建建筑物

第二个IFC读模块用于数据转换。Building要素是一个简单的转换,可以使用GeometryRemover转换器来删除几何,然后通过AttributeRenamer转换器将ifc_unique_id设置为gml_id

从Building中移除几何的简单转换

 

3部分:将复杂的IFC实体几何转换为MultiSurface

所有转换都需要将几何图形从复杂的IFC实体转换为可以写入CityGMLMultiSurface,因此将创建一个名为ConvertGeometry的自定义转换器,以快速复制此过程。

ConvertGeometry自定义转换器中,IFC实体几何通过GeometryPartExtractor转换器从属性集中分离出来,然后通过GeometryCoercer转换器将其转换成surface几何类型。然后,要展平多级几何图形,可以使用Deaggregator转换器将其分解,并将“Mode”设置为“Flatten All Levels”。然后使用Aggregator转换器(Mode”设置为“Geometry-Assemble One Level)GeometryRefiner转换器将几何重新聚合为MultiSurfaces 

ConvertGeometry自定义转换器工作流程

 

4部分:获取祖父母ID

几乎所有要素的父链接都设置为IFC建筑层,而不是建筑,因此我们需要上移一个链接,以使用存储在变量中的查找表创建指向该建筑的CityGML父链接。由于将在整个工作空间中重复此操作,因此将创建另一个名为GetGrandParentID的自定义转换器。

GetGrandParentID自定义转换器中,BinaryEncoder转换器用于为传入的属性创建编码。然后,添加了VariableRetriever转换器以设置_gparent_id。最后,使用BinaryDecoder转换器对_gparent_id进行解码,并输出到目标属性中。

GetGrandParentID自定义转换器工作流程

 

5部分:设置CityGML LOD名称和要素角色

在写出CityGML之前,始终必须遵循严格的命名约定来设置几个属性。在FME Hub上可以找到已经创建好的CityGMLGeometrySetter自定义转换器,用来防止数据录入错误。该转换器用于设置CityGMLLod名称和要素角色。

 

6部分:简单转换

在写入CityGML之前的简单转换需要的最少步骤。主要工作流程如下:

1)读入IFC数据;

2ConvertGeometry几何转换;

3)设置gml_id

4)获取祖级ID

5CityGMLGeometrySetter设置CityGMLLod名称和要素角色;

6)写出到CityGML

简单转换示例,将IfcSpace转换为CityGML Room

 

7部分:复杂的转换

CityGMLBuildingInstallationWallSurface要素由许多IFC要素类型组成,某些IFC要素可能是这两种要素的一部分。将 IFC MembersStairFlightsSlabsRailings合并到Stairs中,然后将这些要素与ColumnsBeams一起写出到BuildingInstallation。其他成员将合并到CurtainWalls中,这些要素会与WallWallStandardCase一起写出到WallsSurfaces中。

 

这些分离和组合可能需要从第一个IFC读模块创建的变量中多次查找父类和祖父母ID

 

8部分:结果

在FZK Viewer中查看的输出CityGML文件

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值