从FME写CityGML

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

CityGML功能类型在FME

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

FME附带了两个样例CityGML数据集,可用于用所需的CityGML编写器特性类型填充Workbench。这些文件位于FME安装的“xml/CityGML/writer_feature_types”文件夹下。“CityGML_feature_types。xml”和“CityGML_NoiseADE_feature_types。xml样例数据集分别有CityGML(0.4和1.0)和citygm - noiseade(0.4和1.0)的特性类型定义。

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

CityGML的详细级别

CityGML指定了5个不同的细节级别,从0(一般拓扑)到4(详细的架构特性和家具)。大多数特性可能包含针对不同lod的几何模型。LOD0通常模拟地形特征。LOD1以简单的棱柱状建筑和一般的景观特征为模型。L0D2在建筑模型中加入了一些建筑特征,在交通、植被和户外家具特征中加入了更多细节。LOD3按照建筑物和室外物体实际出现的样子建模。LOD4为详细的内部结构建模。

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

< cityObjectMember >

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

<建筑:lod2Solid >

< gml:固体gml: id =“aebd7312”>

CityGML特性类型中的FME几何图形必须标记为其预期的几何角色,以便正确地写出。几何角色是通过几何特征“citygml_lod_name”指定的。表1给出了对每种特性类型有效的几何角色,表2显示了每种几何角色的有效FME几何类型。

在Workbench中设置几何角色

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

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

由于我们已经为几何角色传递了一个有效的FME几何图形(作为“lod2Solid”的一个挤压),我们最终在输出中得到一个包含该几何图形的建筑特性:

< cityObjectMember >

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

<建筑:lod2Solid >

< gml:固体srsDimension = " 3 " >

也可以通过AttributeCreator在FME特性上轻松地设置所有其他特定于CityGML的属性,尽管其中许多属性具有一组受限制的值,这些值在CityGML外部代码列表中定义。更多细节见表1-4。

为一个特性编写多个几何角色

为特性创建额外的几何角色并不困难。简单的标签相同的副本,或任何其他几何与适当的角色,并聚集所有几何图形为特征到一个单一的几何:

这里是CityGML道功能:

< tran: lod0Network >
< gml: LineString srsDimension = " 3 " >
12 0 12 0 12 0 0 12 0
< / gml: LineString >
< / tran: lod0Network >
< gml:多面srsDimension = " 3 " >
< gml: surfaceMember >
< gml:多边形>
< gml:外观>
< gml:线性>
 13 0 0 11 0 0 11 11 0 0 11 0 0 13 0 13 13 0 13 0 0
< / gml: posList >
< / gml:线性>
< / gml:外观>
< / gml: surfaceMember >
< / tran: lod1MultiSurface >
< tran: lod2MultiSurface >
< - 相同的GML:个MultiSurface作为lod1MultiSurface  - >
< / tran: lod2MultiSurface >

通常,LOD2中的几何图形应该比LOD1中的几何图形更详细,但是使用相同的几何图形就可以完成这个示例。在这种情况下,它可能有额外的曲线代表道路的单独车道。

几何验证在工作台

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

在FME中设置CityGML属性和属性

CityGML特性的非几何属性和属性是通过FME特性类型的某些属性指定的。这些属性中的大多数都以“citygml_”作为前缀。例如,FME建筑特性的“citygml_屋面_type”属性的值将被写入CityGML建筑特性的“屋面类型”元素的值。

CityGML功能类型的有效属性的完整列表将出现在功能类型上,这些功能类型是通过从包含这些功能的CityGML文档导入功能类型定义的。

大多数接受字符串值的CityGML属性和属性都有一个有效值的枚举列表,这些有效值在CityGML外部代码列表中列出。例如,对于一个建筑特征的“屋顶类型”元素,“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”来指定。

CityGML功能层次结构

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

此工作区生成以下输出:

<建筑:建筑gml: id =“exciting_building_123”>
<建筑:boundedBy >
<建筑:RoofSurface gml: id = " uuid_47be0fd6 - ccec - 45 - ab - 96 f7 - 0868 ff9208d0”>
<建筑:lod3MultiSurface >
< /建筑物:lod3MultiSurface >
< /建筑物:RoofSurface >
<建筑:boundedBy >
<建筑:WallSurface gml: id = " uuid_dafb5306 - 41 - aa - 4 - e07 - 8 f58 - 80874167 - a2a7”>
<建筑:lod3MultiSurface >
< /建筑物:lod3MultiSurface >
< /建筑物:WallSurface >
<! - 三更WallSurfaces  - >
< /建筑:建筑>

有效几何角色列表

Note: ">注意:只需要列出的“citygml_lod_name值”中的一个值。

表1:CityGML特性类型的有效LOD类型

CityGML功能类型

citygml_lod_name价值

GenericCityObject

lod(0 - 4)几何

lod (0 - 4) TerrainIntersection

地址 多点

建筑

BuildingPart

lod固体[1 - 4]

lod[1 - 4]多面

lod[2 - 4]多曲线

lod [1 - 4] TerrainIntersection

BuildingInstallation lod[2 - 4]几何学

RoofSurface

WallSurface

GroundSurface

ClosureSurface

FloorSurface

InteriorWallSurface

CeilingSurface

lod[2 - 4]多面

窗口

lod[3 - 4]多面
房间

lod4Solid

lod4MultiSurface

BuildingFurniture

IntBuildingInstallation

lod4Geometry
水体

lod(0 - 1)多曲线

LOD [0-1]个MultiSurface

lod固体[1 - 4]

WaterSurface

WaterGroundSurface

lod [2 - 4]

TransportationComplex

跟踪

铁路

广场

lod0Network

lod[1 - 4]多面

TrafficArea

AuxiliaryTrafficArea

lod[2 - 4]多面
SolitaryVegetationObject lod[1 - 4]几何学
PlantCover

lod[1 - 4]多面

lod [1 - 3] MultiSolid

CityFurniture

lod[1 - 4]几何学

lod [1 - 4] TerrainIntersection

土地利用 LOD [0-4]个MultiSurface
GeoreferencedTexture referencePoint
TINRelief 程度上
MassPointRelief reliefPoints
BreaklineRelief

ridgeOrValleyLines

破裂线

NoiseRoadSegment

NoiseRailwaySegment

NoiseCityFurnitureSegment

lod0BaseLine

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

LOD名

FME几何图形有效:

GML几何

lod0Geometry

lod1Geometry

lod2Geometry

lod3Geometry

lod4Geometry

relativeGMLGeometry

几何

除了空、光栅和空聚合之外的所有集合

GML:GeometryType

lod1MultiSolid

lod2MultiSolid

lod3MultiSolid

所有的固体

所有表面

表面或区域的均匀聚集物

gml: MultiSolidType

lod0MultiSurface

lod1MultiSurface

lod2MultiSurface

lod3MultiSurface

lod4MultiSurface

所有表面

各领域的

表面或区域的均匀聚集物

gml: MultiSurfaceType

lod0MultiCurve

lod1MultiCurve

lod2MultiCurve

lod3MultiCurve

lod4MultiCurve

线

所有表面

所有的固体

线、弧、面或固体的均质集合

gml: MultiCurveType

lod1Solid

lod2Solid

lod3Solid

lod4Solid

所有的固体

所有表面

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

gml: SolidType

lod2Surface

lod3Surface

lod4Surface

所有表面

各领域的

包含单一表面或区域的聚集体

gml: SurfaceType

lod0TerrainIntersection

lod1TerrainIntersection

lod2TerrainIntersection

lod3TerrainIntersection

lod4TerrainIntersection

线

所有表面

所有的固体

线、弧、面或固体的均质集合

gml: MultiCurveType
lod0Network

所有点

线

各领域的

所有表面

所有的固体

含有单一聚合的

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

GML:GeometricComplexType
噪声:lod0BaseLine(移动我)

线

包含单个线或弧的聚合体

GML:CurveType
referencePoint

包含单点的聚合

GML:PointType
reliefPoints

点的均质集合体

gml: MultiPointType
程度上

长方形脸

各领域的

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

gml: PolygonType
ridgeOrValleyLines

线

所有表面

所有的固体

线、弧、面或固体的均质集合

gml: MultiCurveType
破裂线

线

所有表面

所有的固体

线、弧、面或固体的均质集合

gml: MultiCurveType
多点

包含单个点的集合

gml: MultiPointType

表3:CityGML特性角色

CityGML功能类型

citygml_feature_role价值

外观

外观*

appearanceMember *

GeoreferencedTexture

ParameterizedTexture

X3DMaterial

surfaceDataMember

TINRelief

MassPointRelief

BreaklineRelief

reliefComponent
BuildingInstallation outerBuildingInstallation
IntBuildingInstallation

interiorBuildingInstallation

roomInstallation

RoofSurface

WallSurface

GroundSurface

ClosureSurface

CeilingSurface

InteriorWallSurface

FloorSurface

建筑/ boundedBy * *
房间 interiorRoom
BuildingPart consistsOfBuildingPart
地址 地址

窗口

开盘
BuildingFurniture interiorFurniture

WaterSurface

WaterGroundSurface

严禁/ boundedBy * *
TrafficArea trafficArea
AuxiliaryTrafficArea auxiliaryTrafficArea
噪声:NoiseRailwaySegment 噪音:noiseRailwaySegmentProperty
噪音:NoiseRoadSegment 噪声:noiseRoadSegmentProperty
噪声:NoiseCityFurnitureSegment 噪声:noiseCityFurnitureSegmentProperty
噪声:火车 噪音:usedBy

表4:CityGML特性属性

CityGML父特征类型

有效的属性

除了

地址

X3DMaterial

ParameterizedTexture

GeoreferencedTexture

噪声:火车

外观*

appearanceMember *

外观 surfaceDataMember
ReliefFeature reliefComponent

建筑

BuildingPart

outerBuildingInstallation

interiorBuildingInstallation

建筑/ boundedBy * *

interiorRoom

consistsOfBuildingPart

地址

RoofSurface

WallSurface

GroundSurface

ClosureSurface

FloorSurface

InteriorWallSurface

CeilingSurface

开盘
地址
房间

建筑/ boundedBy * *

interiorFurniture

roomInstallation

水体 严禁/ boundedBy * *

TransportationComplex

跟踪

广场

trafficArea

auxiliaryTrafficArea

trafficArea

auxiliaryTrafficArea

噪声:noiseRoadSegmentProperty

铁路

trafficArea

auxiliaryTrafficArea

噪音:noiseRailwaySegmentProperty

CityFurniture 噪声:noiseCityFurnitureSegmentProperty
噪声:NoiseRailwaySegment 噪音:usedBy
*

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

* *

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