Zh-hans:One feature, one OSM element

From OpenStreetMap Wiki
Jump to navigation Jump to search

一物一素(One feature, one OSM element)是绘制 OSM 中的地图对象时应当遵循的通用规则,其含义是一个地物应且仅应使用唯一的 OSM 元素 来表示。

对地物的应用规则

通用规则

  • 对于由场地及其场地上的建筑构成的地物(如学校等),应将其绘制为一个表示整体土地利用范围的面要素,和一或数个表示建筑物范围的面要素。表示该对象的标签应当用于表示整个土地利用范围的面要素上,而非各个建筑物,除非该建筑物本身具有不同用途。场地内的建筑可被用户默认为是该场地的一部分。
  • 对于位置、形状均可确定的地物(如建筑等),应将其绘制为一个面要素
  • 对于位置确定、形状未知或不明确的地物,应将其位置为一个点要素
  • 对于由多个相对较小的地物构成的实体,通常使用关系来描述

错误示例

  • 将同一个实体同时标为面要素和点要素,且为两者带上相同的标签(如学校、医院等)
  • 为一个实体的场地范围以及场地中唯一的建筑物带上相同的标签(如博物馆等)
  • 为一个闭合的线要素 area 带上类型不兼容的标签,如表示线要素的标签(如 barrier=hedge)和表示面要素的标签(如 amenity=school)。此时,`barrier=hedge` 究竟是表示线要素还是面要素就产生了歧义,标签上的各个属性也无法被对应到各个实体上。更合适的做法是为 amenity=school 单独创建一个关系 relation,将该闭合的线要素 area 设为关系的外部成员 role outer,并将有关教育机构标签转移到关系 relation
  • 为一个实体及其内部具有不同属性的实体带上相同的标签,如在一个点要素或面要素上同时使用 tourism=hotelamenity=restaurant 标签,这会在添加像 opening_hours=* 这样等的标签时引发适用性问题
  • 将两个具有不同属性的实体的标签合并到一个标签中,如用同一个点对象表示酒吧和其附近的 ATM,以及同个楼栋中的多个办公室等
  • 如果一个建筑物全部被某个商业实体或机构所利用,在不引起歧义的情况下,通常可以接受将 building=*shop=*,以及表示 POI 的 name=* 等标签合并到同一要素上;但这种做法是否合适仍有争议[1]

特殊情况

  • 聚落,如村庄、城镇等,其通常以带有名称 name=*place=village 的标签标记在聚落中心处。聚落中的用地应当被视作不同实体,如 landuse=residential
  • 特别长的线状实体,如公路、河流等,通常需要被分割成多个线要素


对标签的应用规则

“一物一素”原则的应用对象是地物,而非标签。某些要素完全可能被标记上多个用于描述同一属性的标签,如 amenity=school + education=school 等。

不过,要注意的是,对某些标签的弃用或替代已取得了社区共识,如在 water=river + waterway=riverbank 的组合中,弃用 waterway=riverbank 是更加合适的做法。


参见