Zh-hans:Node

From OpenStreetMap Wiki
Jump to navigation Jump to search


节点是OpenStreetMap数据模型的核心要素之一。它由空间中的一个点构成,通过其纬度经度以及节点ID来定义。

第三个可选维度(高度)也可包含在内:通过ele键(即“高程”)。节点也可以被定义为某个layer=*level=*的一部分,用于表示某个要素是在其上方或下方通过——例如在桥梁上。

节点可用于定义独立的点状要素,但它们也常常用于定义路径的形状与走向。

截至2020年9月,OpenStreetMap包含了超过70亿个节点

点状要素

节点可以单独使用以定义点状要素。在这种用法中,节点通常至少带有一个标签来定义其用途。节点可以带有多个标签,并且/或者是某个关系的一部分。例如,一个电话亭可以简单地标记为amenity=telephone,也可以额外添加operator=*标签。

路径中的节点

更多信息:路径

许多节点会构成一条或多条路径的一部分,用于定义路径的形状或“走向”。

当路径在同一高度相交时,两条路径必须共享一个节点(例如道路交叉口)。如果公路或铁路以不同高度交叉且互不相连,则它们不应共享节点(例如带有bridge=*的公路交叉口)。当路径在不同高度交叉时,应使用不同的layer=*level=*值进行标记,或者使用location=*标记为“地上”或“地下”。此规则有一些例外情况,例如穿越水坝的道路,根据当前定义,必须与水坝所跨越的水道共享一个节点。

路径上的某些节点也可以带有标签。例如:

数据结构

有关此主题的更多详细信息、请参阅 Rails port/Database schema#Nodes
名称 描述
id 64位整数
≥ 1
节点ID在节点之间是唯一的。(但是,一个路径或关系可能拥有与某个节点相同的ID编号。)编辑器可能会临时将节点ID保存为负数,表示这些ID尚未保存到服务器。服务器上的节点ID是持久不变的,这意味着现有节点被分配的ID在每次数据添加或修正时都不会改变。已删除的节点ID不得重复使用,除非之前的节点被恢复。
lat 十进制数
≥ −90.0000000 且 ≤ 90.0000000
保留7位小数
使用标准WGS84投影的纬度坐标(北纬为正)。某些应用程序可能不接受超出±85度的纬度值,具体取决于所使用的投影。 不要使用IEEE 32位浮点数数据类型,因为对于最高经度值,它仅能精确到大约5位小数。
Rails port使用的一种32位方法是将坐标(以度为单位)乘以1E7并四舍五入后取整:这样可以将所有绝对带符号坐标覆盖在±214.7483647度范围内,即最大差值为429.4967295度,略超出实际所需范围。
对于计算投影,中间结果需要使用IEEE 64位浮点数。
坐标(以度为单位)保留7位小数意味着经度方向的最大误差为赤道上±5.56595毫米,这使得构建厘米级精度的地图成为可能。如果仅保留5位小数,地图数据的精度将仅为米级,会导致重要物体(如建筑物)的形状发生显著变化,或者道路出现大量锯齿状或角度失真。
lon 十进制数
≥ −180.0000000 且 ≤ 180.0000000
保留7位小数
使用标准WGS84投影的经度坐标(本初子午线以东为正)。注意,地理极点正好位于纬度±90度,但在这种情况下,经度将设置为该范围内的任意值。
标签 一组键/值对,键具有唯一性 标记指南请参见地图要素

示例

<node id="25496583" lat="51.5173639" lon="-0.140043" version="1" changeset="203496" user="80n" uid="1238" visible="true" timestamp="2007-01-28T11:40:26Z">
    <tag k="highway" v="traffic_signals"/>
</node>

特殊情况