从FME写CityGML

所述FME CityGML作家映射未在CityGML限定为GenericCityObject(一个或多个)的任何特征类型定义。本主题介绍FME CityGML作家如何被用来输出数据集与预定义的专题CityGML特征类型,如大厦,CityFurniture,水体,公路,铁路等..

FME中的CityGML特征类型

以获取支持的CityGML功能CityGML作家特征类型定义最简单的方法是从现有的数据集CityGML导入。

FME附带了两个CityGML数据集示例,可用于使用所需的CityGML writer功能类型填充Workbench。这些文件位于FME安装的“xml/CityGML/writer_feature_types”文件夹下。“城市特色”_类型.xml“和”CityGML_noisead_功能_类型.xml“示例数据集分别具有CityGML(0.4和1.0)和CityGML NoiseADE(0.4和1.0)的特征类型定义。

注:这些CityGML示例文件不是GML意义上的完整数据集;它们不包含任何可供读取的有意义的数据,仅用于将要素类型定义导入到编写器中。

CityGML详细程度

CityGML指定了五种不同的详细程度(lod),范围从0(常规拓扑)到4(详细的建筑特征和家具)。大多数要素可能包含不同详细等级的几何模型。LOD0通常对地形特征进行建模。LOD1模型简单的棱柱形建筑和一般景观特征。L0D2在建筑模型中融入了一些建筑特征,在交通、植被和户外家具特征方面更为详细。LOD3将建筑物和室外对象按实际显示的方式建模。详细的内部结构模型和LOD4。

为了对于各种应用正确解释的特征的多种几何形状,GML的几何形状被封闭在指示几何形状的作用的元素。作为一个例子,与LOD2固体几何形状的建筑特征如下所示:

<建筑:建筑gml:id=“building890384”>

<建筑:lod2Solid>

...

必须在其几何特征中正确地标记出城市的几何特征。几何角色通过几何特征“citygml_lod_name”指定。表1给出了对每个特征类型有效的几何体角色,表2中显示了每个几何体角色的有效FME几何体类型。

在Workbench中设置几何角色

几何角色可以使用AttributeCreator和串联的GeometryPropertySetter变压器进行设置。

我们在这里使用AttributeCreator的原因是将citygml_lod_name设置为属性,然后使用GeometryPropertySetter将其转换为特征。

因为我们已经为geometry角色传递了一个有效的FME几何体(作为“lod2Solid”的拉伸),我们最终得到了一个包含此几何体的建筑特征:

<建筑:建筑gml:id=“Borring_building_11”>

<建筑:lod2Solid>

...

所有其他特定于CityGML的属性也可以通过AttributeCreator轻松地设置在FME功能上,尽管其中许多属性都有一组在CityGML外部代码列表中定义的值。详见表1-4。

将多个几何角色写入一个要素

为要素创建其他几何体角色并不困难。只需标记相同的副本或具有适当角色的任何其他几何图形,并将该特征的所有几何图形聚合为单个几何图形:

这里是CityGML道功能:

<传输:LOD0网络>
12 0 0 12 12 0 0 12 0

          
 13 0 0 11 0 0 11 11 0 0 11 0 0 13 0 13 13 0 13 0 0

          

          

          

          
<传输:lod2MultiSurface>
< - 相同的GML:个MultiSurface作为lod1MultiSurface  - >

通常,LOD2处的几何体应该比LOD1处的几何体具有更多的细节,但是在本例中使用相同的几何体也可以。对于这条道路,它可能有额外的曲线,代表道路的单独车道。

几何验证在工作台

请注意,在上面的示例中,我们将多边形标记为lodXMultiSurface,尽管它只表示单个区域。CityGML编写器将检查FME几何体是否可以实际写出为指定的几何体角色。如果无法将几何图形转换为有效的类型很容易,则编写器将进行转换。例如,我们的多边形被转换成一个曲面,然后包裹在一个多重曲面中。如果FME几何图形对于指定的几何图形角色无效,并且无法转换为有效的几何图形(例如,标记为“lod3MultiCurve”的点),则不会写出该几何图形。

在FME中设置CityGML属性和属性

CityGML要素的非几何属性和属性是通过FME要素类型的某些属性来指定的。这些属性的大多数前缀都是“citygml”。例如,FME建筑要素的“citygm_roof帴u type”属性的值将写入citygml建筑要素的“roofType”元素的值。

CityGML要素类型的有效属性的完整列表将显示在通过从包含这些要素的CityGML文档导入要素类型而定义的要素类型上。

大多数接受字符串值的CityGML属性和属性都有列在CityGML外部代码列表中的有效值的枚举列表。例如,对于建筑要素的“roofType”元素,“1070”表示亭子屋顶。FME中CityGML特性的相应属性应设置为这些有效值之一,尽管FME当前不验证这些值。

从FME写作CityGML出场

FME 2010只支持读取和CityGML出场的写作。在FME,外观对象存储在一个公共图书馆和表面包含于施加给它们的外观的参考。所述FME外观包含两个恒定(材料)和非恒定(纹理)的表面特性的信息。由传递到CityGML作家的表面所引用的任何FME出场将被写入作为一个ParameterizedTexture或X3DMaterial,取决于外观是否包含纹理信息。笔者将尝试在ParameterizedTexture或X3DMaterial功能传入的情况下再使用任何现有的要素(如一个CityGML到CityGML翻译过程中)。在这种情况下,该元素将被写出为原CityGML外观的成员,并在原来的主题。如果必须创建新的元素,他们将CityModel下一个新外观的成员。默认主题名称为“FMETheme”,但它可以通过先进的工作台参数“主题名称”来改变。ParameterizedTexture和X3DMaterial元素可以属于即使在不同的外观,功能不变的主题。

如果任何引用的FME外观包含纹理信息,则图像文件将被写入目标文件夹的子文件夹中。根据CityGML约定,默认情况下,此文件夹命名为“appearance”。文件夹名称可以通过高级工作台参数“Texture subfolder”指定。

CityXML功能层次结构

许多CityGML功能是其他功能的集合。在FME中,可以通过“gml_id”和“gml_parent_id”属性指定此关系。子元素的“gml_parent_id”值应等于其父元素的“gml_id”值。这个gml:id属性对于CityGML文档中的所有功能,必须是唯一的。使用UUIDGenerator转换器将确保这些值是唯一的,但它们必须以非数字字符作为前缀。注意CityGML编写器将动态生成gml:id属性它写入的所有特性的值(基本上使用下面所示的相同方法),因此不必使用这些转换器,除非必须访问gml_id属性的值。

此工作区生成以下输出:

<建筑:建筑gml:id=“激动人心的_building_123”>
<建筑:边界>
<ビ:RoofSurface GML:ID = “UUID_47be0fd6-CCEC-45AB-96f7-0868ff9208d0”>
<建筑:lod3MultiSurface>
...
<建筑:边界>
<建筑:墙面gml:id=“UUID_dafb5306-41aa-4e07-8f58-80874167a2a7”>
<建筑:lod3MultiSurface>
...
<! - 三更WallSurfaces  - >

有效几何角色列表

注:只需要列出的“citygml\u lod_name Value”值中的一个。

表1:CityGML要素类型的有效LOD类型

CityXML功能类型

城市名称值

通用对象

lod[0-4]几何

lod[0-4]地形界面

地址 多点

建筑

BuildingPart

lod[1-4]实心

lod[1-4]多曲面

lod[2-4]多曲线

lod[1-4]地形界面

建筑安装 LOD [2-4]几何学

屋顶

墙面

地面

ClosureSurface

地板表面

内墙面

CeilingSurface

lod[2-4]多曲面

窗口

lod[3-4]多曲面
房间

lod4Solid

LOD4多曲面

建筑家具

内部安装

4光度法
水体

LOD [0-1]多曲线

LOD [0-1]个MultiSurface

lod[1-4]实心

水面

WaterGroundSurface

lod[2-4]曲面

运输综合体

跟踪

道路

铁路

正方形

LOD0网络

lod[1-4]多曲面

TrafficArea

辅助交通区

lod[2-4]多曲面
SolitaryVegetationObject lod[1-4]几何
植物覆盖

lod[1-4]多曲面

lod[1-3]多实体

CityFurniture

lod[1-4]几何

lod[1-4]地形界面

土地用途 LOD [0-4]个MultiSurface
地理参考纹理 参考点
锡浮雕 程度
浮雕 救济点
BreaklineRelief

山脊山谷线

特征线

噪声附加段

NoiseRailwaySegment

NoiseCityFurnitureSegment

LOD0基线

表2:用于citygml_lod_name属性值的有效几何形状

LOD名

有效的FME几何图形

GML几何

LOD0几何

碘1几何

碘量测

lod3Geometry

4光度法

relativeGMLGeometry

几何学

除null、光栅和空聚合外的所有

GML:GeometryType

LOD1多固体

lod2MultiSolid

LOD3多固体

所有固体

所有表面

表面或区域的均质集料

gml:多实体类型

LOD0多曲面

LOD1多曲面

LOD2多曲面

LOD3多曲面

LOD4多曲面

所有表面

所有区域

表面或区域的均质集料

gml:多曲面类型

lod0MultiCurve

LOD1多曲线

LOD2多曲线

LOD3多曲线

LOD4多曲线

线

所有表面

所有固体

线、弧、面或固体的均匀聚集体

gml:多曲线型

LOD1固体

lod2Solid

lod3Solid

lod4Solid

所有固体

所有表面

含有单一固体或表面的聚集体

gml:实心类型

lod2Surface

LOD3表面

lod4Surface

所有表面

所有区域

含有单一表面或区域的集料

gml:表面类型

lod0TerrainIntersection

lod1TerrainIntersection

LOD2地形界面

lod3TerrainIntersection

lod4TerrainIntersection

线

所有表面

所有固体

线、弧、面或固体的均匀聚集体

gml:多曲线型
LOD0网络

所有点

线

所有区域

所有表面

所有固体

含有单一

点、线、弧、面、面或实体

GML:GeometricComplexType
噪波:LOD0基线(移动我)

线

包含一条直线或圆弧的集合

GML:CurveType
参考点

包含单点的集料

GML:PointType
救济点

点的均质集合体

gml:多点类型
程度

面对

长方脸

所有区域

含有单个面聚集体,矩形面部,或区

gml:多基因型
山脊山谷线

线

所有表面

所有固体

线、弧、面或固体的均匀聚集体

gml:多曲线型
特征线

线

所有表面

所有固体

线、弧、面或固体的均匀聚集体

gml:多曲线型
多点

骨料含有单个点

gml:多点类型

表3:CityGML功能角色

CityXML功能类型

城市角色价值

外观

外观*

appearanceMember *

地理参考纹理

ParameterizedTexture

X3D材料

表面参数

锡浮雕

浮雕

BreaklineRelief

浮雕构件
建筑安装 室外建筑安装
内部安装

室内建筑安装

roomInstallation

屋顶

墙面

地面

ClosureSurface

CeilingSurface

内墙面

地板表面

建筑/边界**
房间 室内设计室
BuildingPart 建筑部分构成
地址 地址

窗口

开盘
建筑家具 室内家具

水面

WaterGroundSurface

水体/边界**
TrafficArea 交通区
辅助交通区 auxiliaryTrafficArea
噪声:噪声铁路段 噪音:noiseRailwaySegmentProperty
噪音:NoiseRoadSegment 噪波:noiseRoadSegmentProperty
噪音:噪音设备段 噪波:噪比家具分段特性
噪音:火车 噪音:usedBy

表4:CityGML特征属性

CityGML父特征类型

有效属性

所有要素类型,除了

地址

X3D材料

ParameterizedTexture

地理参考纹理

噪音:火车

外观*

appearanceMember *

外观 表面参数
效力 浮雕构件

建筑

BuildingPart

室外建筑安装

室内建筑安装

建筑/边界**

室内设计室

建筑部分构成

地址

屋顶

墙面

地面

ClosureSurface

地板表面

内墙面

CeilingSurface

开盘
地址
房间

建筑/边界**

室内家具

roomInstallation

水体 水体/边界**

运输综合体

跟踪

正方形

交通区

auxiliaryTrafficArea

道路

交通区

auxiliaryTrafficArea

噪波:noiseRoadSegmentProperty

铁路

交通区

auxiliaryTrafficArea

噪音:noiseRailwaySegmentProperty

CityFurniture 噪波:噪比家具分段特性
噪声:噪声铁路段 噪音:usedBy
*

外观功能,是在CityGML V0.4其它特征属性被封闭在一个“appearanceMember”元素。在V1.0,外观是的特征特性被封闭在一个“应用程序:外观”的元素,但那些在CityModel的属性被封闭在一个“应用程序:appearanceMember”元素。

**

“boundedBy”既是AbstractBuildingType的WaterBodyType的和的性质,虽然允许值由模块不同。对于这两个属性的认识“citygml_feature_role”值为“boundedBy”。