从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
传输:LOD0网络>
13 0 0 11 0 0 11 11 0 0 11 0 0 13 0 13 13 0 13 0 0
GML:多边形>
GML:个MultiSurface>
事务:lod1多曲面>
<传输:lod2MultiSurface>
< - 相同的GML:个MultiSurface作为lod1MultiSurface - >
传输:lod2MultiSurface>
TRAN:路>
通常,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>
...
建筑:lod3MultiSurface>
建筑:屋顶>
ビ:boundedBy>
<建筑:边界>
<建筑:墙面gml:id=“UUID_dafb5306-41aa-4e07-8f58-80874167a2a7”>
<建筑:lod3MultiSurface>
...
建筑:lod3MultiSurface>
建筑:墙面>
ビ:boundedBy>
<! - 三更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”。 |