span8
span4
这个例子演示了一个更复杂的LOD 200 IFC模型到LOD3 CityGML文档的高级转换。输出包含LOD2和LOD3,分别代表河边建筑。
国际金融公司-lod3city.fmw(没有数据的已完成工作区)
下载lod_100数据(数据可从VectorWorks下载)
下载lod_200数据(数据可从VectorWorks下载)
1)下载数据
本次演习将使用DC滨江大厦LOD 100 IFC文件和DC滨江大厦ARCH 200 IFC文件。在开始之前,请下载lod_100数据和lod_200数据从VectorWorks网站。
2)读取源
在本例中,Revit阅读器用于读取LOD 200 IFC数据。这种方法的优点是它提供了“带有层次结构的构建元素”的读取器选项,该选项用于组装和公开构建元素的属性。REVIT阅读器提取的几何图形可以更容易地写入类似于GIS的表示,如CityGML文档。
添加一个欧特克复仇读取到空白工作区并浏览到DC_Riverside_Bldg-ARCH-LOD_200。ifc数据集。在参数中,确保Revit数据视图被设置为构建具有层次结构的元素。
autodesk revit reader参数
对于要读取的功能类型,请选择BuildingColumnStair、BuildingElementProxy、门、成员、开口、平板、楼梯、墙壁和窗户。在画布上应该有9种功能类型。
3)按citygml特征类型分组
必须知道哪些IFC模型的构建元素或层由CityGML文档的特定功能类型表示。有时,CityGML功能类型对应多个构建元素。在本例中,它们被一个公共ID合并,因此可以一起路由到相同的功能类型。由于IFC数据的元素id不是有效的GML id,因此为每个特性创建新的GML id。另外,每个特性都有一个属性,可以将其与其父类的GML ID(构建特性类型)连接起来。
添加一个属性创建者将变压器连接到画布上,并将其连接到楼梯段和BuildingElementProxy。在参数中,将_bldginstallation附加到变压器名称。然后创建一个名为feature_type的新属性,并赋予它BuildingInstallation的值。创建第二个名为parent_name的属性,并赋予它dc_riverside_building的值。最后,创建第三个属性_uuid,并赋予它gml_@UUID()的值
使用attributecreator创建三个新属性
复制AttributeCreator并将其连接到BuildingColumn和Member。在参数中,将_BldgParts附加到转换器名称,并将feature_type的值更改为BuildingPart。
将AttributeCreator复制三次,设置如下:
连接功能类型 | 追加变压器名称 | FEATURE_TYPE价值 | |
AttributeCreator_3 | 墙壁 | _Walls | 墙 |
AttributeCreator_4 | 板 | _FloorRoof | 楼顶 |
AttributeCreator_5 | 门窗 | _Openings | 门窗 |
开放的特性类型将暂时保持未连接。
每种功能类型的属性创建者参数和连接
4)缩放并创建坐标系
该模型目前的单位是毫米,需要按米换算。添加一个定标器转换到画布并将其连接到所有属性创建器。在参数中,将x、y和z设置为0.001。
在ifc中没有存储坐标系信息。这个局部协调系统transformer仍然允许我们使用自动生成的本地参考系统(azmea)标记所有特性。将LocalCoordinateSystemsetter添加到画布并将其连接到缩放器。在参数中,设置以下内容:
坐标系原点 | LL84 |
原点X | -76.986560155564575 |
原点Y | 38.876070469421258 |
本地坐标系原点x和y的参数
最后,将需要更改坐标系。添加一个CSMAP重组子转换到画布并将其连接到LocalCoordinateSystems编辑器。在参数中,将目标坐标系设置为epsg:2248,并将垂直处理设置为相对于椭球体或地心的高度。
5)创建建筑特征类型
ifc模型的层次结构通常比citygml文档的层次结构更复杂。在本例中,citygml模型是以一种简化的方式组装的,即除洞口外,所有建筑元素都是建筑特征类型的子元素。
添加一个行业基础类STEP文件(ifc)阅读画布并浏览到dc_riverside_bldg-lod_100.ifc数据集。在参数中,将read ifcspace geometries更改为yes。在“选择要素类型”对话框中,仅选择ifcspace和ifcslab。
ifc阅读器参数;将read ifcspace geometries更改为yes
接下来,需要创建单个网格。添加一个三角架转换到画布并将其连接到ifcspace和ifcslab。在参数中,确保“聚合处理”设置为“取消聚合”。然后添加网状合并转换到画布并将其连接到三角架上的tinsurface输出端口。
将三角架连接到ifcslab和ifcspace,将网格合并到tinsurface输出端口
6)创建citygml属性。
不需要创建每个citygml特性类型。可以从citygml_feature_types.xml文件导入所有功能类型架构,该文件位于安全fme安装的xml文件夹中。亚搏在线要创建citygml文档,必须为每个功能设置有效的几何体、功能角色和详细级别。几何角色必须设置为几何上的特征。城市英语编写器使用此特性为特征创建正确有效的几何图形。要素角色和详细级别设置为属性。
添加一个城市地理分析仪转换到画布并将其连接到网格合并。这是一个自定义转换器,它创建citygml特性角色和详细级别属性,这些属性遵循严格的命名约定。使用转换器可防止区分大小写的输入错误。在参数中,将citygml lod name设置为lod2solid,然后将feature role设置为cityobjectmember。
接下来,将attributecreator添加到画布并将其连接到citygmlgeometrysetter。在参数中,创建以下属性:
属性名称 | 属性值 |
citygml_level_of_detail | 2 |
gml_id | gml_ @ UUID() |
gml_name | dc_riverside_building |
7)向CityGML写出建筑物
突出显示并复制scaler、localcoordinatesystemsetter和csmapreprojector transformers。将scaler_2连接到连接到ifcspace和ifcslab工作流的attributecreator。亚搏在线
添加一个城市英语写入画布并浏览到要保存的文件夹,将文件命名为riverside_lod3.gml。默认参数正常,但将要素类型定义设置为“自动”。接下来,在“要素类型”窗口中,将要素类型名称更改为Building。将其连接到csmapreprojector_2。
亚搏在线在citygml中创建建筑的工作流
8)加入父gml_id
接下来,将建筑元素与建筑连接,添加特色合并转换到画布。将建筑元素工作流中的csmapreprojector连接到请求程序输入端口,然后将ifcspace和ifcsla亚搏在线b工作流中的attributecreator连接到供应商输入端口。
将工作流从revi亚搏在线t reader和ifc reader连接到featuremerger
在参数中,将join on requestor设置为parent_name,然后将supplier设置为gml_name。将属性累积模式设置为前缀supplier并添加前缀suppl。
特征合并参数;在父名称和gml名称上联接,并将前缀设置为suppl_
9)保持和创建属性
有一堆属性是不需要的。添加一个属性保存器转换到画布并将其连接到FeatureMerger上的合并输出端口,然后仅选择要保留的以下属性:
attributeKeeper参数
将attributecreator添加到画布并将其连接到attributekeeper。在参数中设置以下内容:
属性名称 | 属性值 |
citygml_level_of_detail | 3 |
gml_id | _ Uuid公司 |
gml_parent_id | suppl_gml_id |
10)过滤器属性
既然所有特性都接收到了适当的citygml属性,就需要根据它们的类型对它们进行样式设置。使用属性筛选器变压器。将attributefilter转换器添加到画布并将其连接到attributekeeper。在参数中,将要筛选的属性设置为“要素类型”。然后,对于可能的属性值,请键入以下内容:
attributefilter参数用于分离零件
11)建筑设施和建筑部件
建筑安装和建筑部件的规范因其选定的几何图形和特征角色而异。要编写有效的citygml文档,关键是要知道哪些角色对某些功能类型有效。建筑安装是citygml中限制最少的几何角色之一。任意的GML几何图形可以表示Lod3几何图形,而建筑部分仅限于Lod3实体、Lod3多曲面、Lod3多曲线和Lod3 TerrainIntersection。对于ifc到citygml的转换,lod3mulitsurface可能是最安全的选择,因为如果使用lod3solid,某些功能可能亚搏在线无法构建有效的实体几何图形。
将citygmlgeometrysetter添加到画布并将其连接到attributefilter上的buildinginstallation输出端口。在参数中,将citygml lod name设置为lod3geometry,并将feature role设置为outerbuildinginstallation。
下一步,添加外观设计师转换到画布,并将其几何输入端口连接到citygmlgeometrysetter\u 2。在“参数”中,展开“颜色参数”并将“外观名称”设置为“安装”,将“漫反射颜色”设置为0.317647、0.317647、0.317647,然后将“Alpha”设置为1。
appearancesetter参数,设置外观名称、漫反射颜色和alpha。
添加writer功能类型并将其命名为buildinginstallation,将其连接到appearancesetter上的输出端口。
复制citygmlgometrysetter、appearencesetter和writer功能类型。将副本连接到AttributeFilter上的生成部件输出端口。
在citygmlgeometrysetter_3中,将citygml lod名称更改为lod 3 multisurface,并将feature角色更改为consistsofbuildingpart。在appearancesetter_2中,将外观名称更改为part,将漫反射颜色更改为黑色。最后,将writer特性类型重命名为buildingpart。
建筑部件和建筑安装工作流亚搏在线
12)屋顶、墙壁和地板
在画布上添加另一个citygmlgeometrysetter;这次将它连接到地板和属性过滤器上的墙输出端口。在参数中,将citygml lod name设置为lod3multisurface,将feature role设置为boundedby。
下一步,将特征拆分为它们的部分,添加测试筛选器转换到画布。在参数中,将第一个if test condition设置为name contains roof或pset_slabcommon.isexternal=yes,然后将输出端口设置为roof
设置else if to name contains wall和输出端口to wall
将else输出端口设置为floor
testfilter参数创建输出端口roof、wall和floor
接下来,添加appearancesetter并将几何体输入端口连接到testfilter上的roof输出端口。在参数中,将“外观名称”设置为“屋顶”,将“漫反射颜色”设置为“红色”,将“Alpha”设置为“1”。添加另一个writer功能类型并将其命名为roofsurface,然后将其连接到appearencesetter上的输出端口。
复制appearencesetter和writer功能类型,并将其连接到testfilter上的wall输出端口。在appearancesetter参数中,将外观名称更改为wall,颜色更改为浅黄色。将writer功能类型重命名为wallsurface。
再次复制appearencesetter和writer功能类型,并将其连接到地板输出端口。在appearancesetter参数中,将外观名称更改为floor,颜色更改为brown。将writer要素类型重命名为floorsurface。
亚搏在线屋顶、墙壁和地板citygml功能的工作流
13)保持等级
ifc模型的洞口层可以为每个门窗提供其所属墙的图元id。要将这个两级层次结构转换为citygml中需要的层次结构,需要两个连接。
第一个连接是将先前添加的洞口特征类型与墙连接。将FeatureMerger添加到画布并将墙输出端口从AttributeFilter连接到供应商输入端口。然后将打开特征类型连接到请求程序输入端口。将请求者的联接设置为element_parent_id,将供应商设置为element_id。然后将属性累积模式设置为前缀supplier并添加前缀suppl wall。
将另一个FeatureMerger添加到画布,并将AttributeFilter上的Windows门输出端口连接到请求程序输入端口,然后将上一个FeatureMerger的合并输出端口连接到供应商输入端口。将请求者的联接设置为element_parent_id,将供应商设置为element_id。然后将属性累积模式设置为前缀supplier并添加前缀suppl。
保留洞口的层次工作流亚搏在线
14)门窗
创建门窗特征的最后一步是设置citygml属性并应用外观。添加attributecreator并将其连接到合并的输出端口。在参数中设置以下内容:
属性名称 | 属性值 |
citygml_lod_name | lod3MultiSurface |
citygml_level_of_detail | 3 |
citygml_feature_role | 开盘 |
gml_id | _ Uuid公司 |
gml_parent_id | suppl_suppl_wall_uuid |
然后将geometryPropertySetter连接到AttributeCreator。在参数中,将源属性设置为citygml_lod_name。
将门窗分开,添加一个测试仪转换到工作区并将其连接到geometryPropertySetter上的set输出端口。将测试设置为name=window。
将appearancesetter添加到画布并将其连接到测试仪上传递的输出端口,这将设置窗口的外观。在参数中,将“外观名称”设置为“窗口”,并将“漫反射颜色”设置为浅蓝色。若要为窗口外观实现类似玻璃的透明效果,请将“Alpha”设置为0.2,将“Shininess”设置为1。
添加另一个writer功能类型并将其命名为window,然后将其连接到appearencesetter上的输出端口。
添加另一个AppearanceSetter并将其连接到测试仪上的失败输出端口,这将设置门的外观。在参数中,将“外观名称”设置为“门”,将“漫反射颜色”设置为“浅棕色”,将“Alpha”设置为1。
添加另一个writer特性类型并将其命名为door,然后将其连接到appearancesetter上的输出端口。
整个已完成的工作区
15)检查并验证citygml文件
在运行工作区之前,请确保已将拒绝的功能处理设置为继续转换,然后运行工作区。
在fme数据检查器中查看的输出citygml文件
通过在数据检查器中打开生成的citygml文件,用户可以检查缺少的几何图形或错误的外观。这个XML验证程序transformer可用于验证citygml文档。连接到xmlvalidator的creator转换器将启动验证。在xmlvalidator参数中,选择citygml文件作为输入,并选择适当的模式文件进行模式验证。对于citygml 1.0,请使用:
如果在写入citygml时看到错误或几何图形丢失,也可以使用几何校准仪用于在写入要素之前检查输出中的二维和三维几何图形错误的转换器。甚至还有一些修复选项,尽管这些选项应该谨慎使用并验证结果,因为任何修复都有可能引入新的错误。
数据属性
滨江大厦示范工程资料制作单位NEMETSKEK矢量图。
©2019安全亚搏在线软件公司法律