CityGML特性表征
本节描述在CityGML Reader和writer中如何处理多个几何图形,如何描述细节级别,并解释当CityGML Reader解释一个CityGML数据集时创建的特性层次结构。
从CityGML Reader读取的CityGML特性在FME中的名称与它们在应用程序模式中的名称相同。例如,CityGML Building将创建一个名为建筑FME基金。唯一的例外是GenericCityObjects.作为通用对象,特性类型的名称将在可能的情况下匹配其gml_name属性的名称。
多个几何图形
在一个CityGML数据集中,相同的特征可以同时以多级细节表示。由于FME不支持一个特性上的多个几何图形,CityGML阅读器将为一个特性类型创建一个几何图形集合,每个细节级别对应一个几何图形。
如果一个特征类型只有一个细节级别可用,那么表示该特征的非聚合几何体将被创建。
由于在CityGML中定义的多个几何图形可能映射到一个单一的FME几何图形,因此我们将原始的CityGML几何图形保留为一个名为gml_geometry.
这种几何形状的灵活性给希望编写CityGML的用户带来了一个问题。给定一个带有一些几何学的特征,作者将如何解释几何学的作用。例如,一个建筑支持十几种不同的几何元素。作者如何确定合适角色几何?通常,您必须用一个几何特征来标记每个几何组件,该特征定义了几何组件所扮演的几何角色。例如,如果您正在编写一个具有多面几何和实体几何的Building,您可以使用GeometryPropertySetter转换器来设置属性citygml_lod_name要建立角色,使用以下标记多面:lod3MultiSurface固体Lod2Solid.在某些情况下,可能需要使用Deaggreagator转换器来拆分几何图形,标记每个组件,然后再次将它们聚合在一起。
价值citygml_lod_name属性也必须与几何类型兼容。例如,标记为lod3MultiSurface必须是MultiSurface,否则几何图形将不会被写出来。在某些情况下,对给定角色无效的几何图形将被转换为有效的几何图形。例如,带有lod3MultiSurface将被包裹在MultiSurface中,并用lod2MultiCurve将转换为多曲线。
为了帮助自动翻译,几何图形没有citygml_lod_nameTrait将被假定为lod4Geometry元素,如果它们的特性类型是GenericCityObject.
的详细程度
为了跟踪具有几何体的特性的特定细节级别,CityGML Reader将创建一个名为citygml_level_of_detail.列表元素的值将是0到4之间的整数(包括4)。如果特性类型是特性的集合,那么list属性将包含与该集合中几何图形数量相同的元素。聚合中的几何图形保持它们的顺序,list属性按顺序跟踪每个几何图形的详细级别。
如果创建了非聚合几何,则citygml_level_of_detail属性将只包含一个引用所创建几何体细节级别的元素。
除了citygml_level_of_detail列表属性,两个几何特征将放在几何本身,以确定其细节级别:citygml_level_of_detail和citygml_lod_name.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 功能类型:CityFurniture属性(string): citygml_class的有价值1000的属性(string): citygml_function有价值1080的属性(string): citygml_level_of_detail{0}的值2的属性(string): fme_feature_type CityFurniture价值的属性(string):fme_geometry' has value fme_point' Attribute(string): fme_type' has value fme_point' Attribute(string): gml_id' has value gml-id01' Attribute(string): xml_type' has value xml_point' Attribute: citygml_level_of_detail{0}' is sequenced Coordinate System: ' Geometry Type: IFMEPoint Number of Geometry Traits: 1citygml_level_of_detail“价值2”GeometryTrait(字符串):citygml_lod_name lod2Geometry有价值的坐标尺寸:3 (0,0,0 ) =======================================================================
功能层次结构
CityGML的设计原则是将真实世界的实体作为功能模型,如建筑和墙壁,并保持功能之间的“部分”关系。例如,一扇窗和一扇门可能在同一语义层面上,因此它们都可能是同一面墙的“一部分”。
CityGML Reader通过为每个CityGML特性创建一个特性来模仿CityGML主题模型的这种层次结构,并通过它来维护“部分”关系gml_id
和gml_parent_id
属性。在上面的例子中,窗口和门都指定了agml_parent_id
相当于gml_id
他们将成为这堵墙的一部分。
属性也可以抑制纹理数据的读取外表
参数,以加快翻译速度。如果纹理读取被抑制,X3DMaterial, GeoreferencedTexture和ParameterizedTexture特征将总是被创建。
没有几何但有参考点的数据特征(例如,在隐式几何的情况下)将创建一个与这个参考点相对应的点几何。
CityGML Writer类似地使用gml_id
和gml_parent_id
属性来确定特征层次结构。
MATERIAL_FEATURES
指令设置为Yes:
以前,CityGML Reader不支持FME几何外观模式。因此,CityGML material XML元素、X3DMaterial(s)、georeferencedtextures (s)和parameterizedtextures (s)元素被解读为单独的特征类型。CityGML外观信息现在被自动应用到指定的目标表面;从X3DMaterial、GeoreferencedTexture和ParameterizedTexture元素创建特征类型因此是不必要的,默认情况下被抑制了。