OpenStreetMap (OSM) XML Reader/Writer
许可选项对于这种格式,从FME专业版开始。
OpenStreetMap (OSM)是一个协作映射项目,用于创建一个免费的、可编辑的全球地图。
本节假设您熟悉OSM格式。有关OSM的更多信息,请浏览http://www.openstreetmap.org.
概述
OpenStreetMap数据可以以拓扑结构的XML格式下载。OSM数据文件中的数据原语是节点、方法和关系。
- 一个节点是一个长/长对。
- 方法是描述线性特征的至少两个节点引用的列表。方法可以关闭,在这种情况下,第一个节点和最后一个节点是相同的。区域不是在OSM中明确表示的,而是通过社区认可的标签来识别的。亚搏国际在线官网
- 关系是由零个或多个具有关联角色的原语组成的一组。OSM中的所有数据都在WGS-84基准中。
OSM没有明确的模式(特性类型)定义。每个节点、方式和关系可以有任意数量的属性(称为标签OSM)。标签由键和值组成。OpenStreetMap wiki定义了一组推荐标签,可用于将节点和方法分类为更高级别的分组(特性类型)。
FME OSM读取器提供了一些用户设置,以帮助影响正在读取的OSM数据的分类。对于大多数具有显式模式定义的GIS格式来说,这是必需的。社区定义亚搏国际在线官网的特征类型可以在http://wiki.openstreetmap.org/wiki/Map_Features.
读者概述
OSM阅读器可以用几种不同的方式解释OSM XML文件。读者可以输出未分类的节点、方法和关系,也可以根据在中发现的推荐解释对这些数据原语进行分类http://wiki.openstreetmap.org/wiki/Map_Features.
OSM阅读器提供了一个树形视图界面,用于使用OSM社区认可的特征类型解释OSM数据。亚搏国际在线官网这些数据可以用广义的和特定的特征来解释。
例如,用户可以通过选择树视图中的顶级元素来选择所有广泛的特性(例如,highway, aeralway等);通过扩展广义特征,选择具体特征(如highway_motorway、highway_primary等),选择所有具体特征。用户还可以选择广泛和具体的功能组合。
OSM阅读器还允许用户提供自己的用户配置文件。这个用户配置文件允许用户定义自己的特性类型,并向它们添加任何属性或几何类型。此外,用户文件可以用来删除现有的特性类型、属性和几何类型。
注意,阅读器提供了一个选项,可以在树视图中选择的特性之上执行模式扫描。在这种情况下,阅读器将扫描整个数据文件,在树视图中发现的任何特性也将被构建。对大文件进行模式扫描可能是一个缓慢的过程:在这种情况下,更可取的做法可能是简单地手动选择特性类型。
除了三个例外,没有解释OSM关系。已解释的关系是那些被标记为键的关系类型
和两者的值多个多边形
,路线
,或限制
.这两个路线
和限制
输出是否为非几何特征,它们的特征类型设置为relation_route
和relation_restriction
,分别。的多个多边形
关系输出为一个区域或多个区域的几何形状;这包括甜甜圈,或多边形和甜甜圈的集合。的多个多边形
关系可以输出为直线或非几何特征。在几何信息不好的情况下多个多边形
关系特性类型将被设置为relation_multipolygon
.
几何
OSM阅读器支持点、线和面积几何图形。点由OSM节点构造,线性特征由OSM方法构造,区域特征由适当标记的封闭OSM方法构造,或由OSM多多边形关系构造。
坐标系统
由OSM阅读器输出的特性总是在LL84中。
FME功能属性
从OSM数据原语加载的所有OSM标签都是作为FME特性属性加载的。关系特征类型将其成员映射为FME特征中的FME列表属性。list属性有3个组件:
{} .type成员
{} .ref成员
{} .role成员
关系特性类型也有一个名为的属性osm_relation_type
来描述关系的类型。
可以使用此成员列表属性进一步处理FME Workbench中的关系。
在OSM方式中,特性是通过引用节点id来构造的。这些节点id被映射到nd {} .ref
list属性中FME方式的特征。
作家概述
OSM写入器将特性作为节点、方法和关系写入到OSM文件中。拥有超过2000个点的线和区域将被分成多种方式,每种方式最多有2000个节点。也会处理重复的节点,以确保没有重复的OSM节点被写入。坐标转换到WGS84/LL84自动完成到写入器。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
OSM编写器中的特性类型没有任何预定义的模式。在特性类型上指定的用户属性将被用作输出文件的OSM元素中的标记,如果这些属性存在于特性或几何图形的几何特征上。
示例:名为“amenity”的特性类型有3个标签,如果特性有这样的属性,OSM writer将创建:
OSM_2_DEF舒适\
美化市容xml_char \ (17)
建筑xml_char (4) \
源xml_char (19)
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
如果特征属性或几何特征存在,那么每个OSM元素都有一些公共属性:id,uid,时间戳,可见,变更集,版本
.
如果一个OSM节点、点或关系没有id
属性,则将为每个元素分配一个负值。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
所有包含点的几何图形(包括线、多边形、甜甜圈或任何多几何图形)都将其坐标写为OSM节点。
只有当在特征类型上定义了用户属性,并且这些属性以属性的形式存在于特征上,或者以点级几何形式存在于特征上时,OSM节点上的标签才会被写出来。
在同一节点有多个源的情况下(例如,从一个点和一条线),只会输出第一个ID为正的节点。如果没有ID为正的节点,则写入器遇到的第一个节点将被写入。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
所有的线性几何图形将有相应的OSM方式元素写出来。写入器不检查重复的行。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
如果,则将特性写成OSM关系osm_relation_type
属性存在,且该属性的值决定关系的类型。
与关系相关联的标记必须指定为特性上的属性。成员的标签(OSM方法和节点)必须指定为特征的每个几何部分的特征。
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
OSM writer也从donut或多多边形几何中写出多多边形关系,即使osm_relation_type
属性在该特性上不存在。
所写的多多边形关系遵循中所描述的规则和例子http://wiki.openstreetmap.org/wiki/Relation:multipolygon
![关闭](http://www.baooytra.com/docs/fme/2017.0/html/FME_Desktop_Documentation/FME_ReadersWriters/osm/../Skins/Default/Stylesheets/Images/transparent.gif)
一个具有空或无几何形状的特征可以通过指定以下属性来描述OSM关系:
osm_relation_type | 要写的OSM关系的类型 |
{} .ref成员,{} .role成员和{} .type成员list | 每个属性描述相关成员的引用id、角色和类型。列表属性的长度必须相等;否则,没有关系将写出来。 |
具有集合几何的特性可以写成任何关系osm_relation_type
都是确定的。所有非空几何部分将被写出来作为方法和/或节点,并包含在关系中的成员。的属性<名>
元素(角色
和类型
)必须指定为几何部分的特征。的ref属性<名>
由已写出的方法或节点的ID填充。
©OpenStreetMap贡献者