立交桥关系铁路段

时间:2014-11-05 07:36:23

标签: openstreetmap relation overpass-api

我想查询Overpass Api以找出特殊关系(铁路)的距离。请求没问题,并将我感兴趣的所有relationwaynode个对象退回给我。汉堡示例:

[out:json];(rel(53.55224324163863, 10.006766589408304, 53.55314275836137, 10.008081410591696)["route"="train"];>;);out body;

在Overpass中,每个relation对象都有定义此关系的成员。对于way个对象,您可以解析其node属性的纬度/经度并计算该方式的距离。如果总结一路距离似乎是合理的。

但是,有relationnode的成员(大部分时间,他们有role"停止")似乎表示来自relation的停靠点的正确顺序。但是在成员之间,它们大致在最后。 如果我试图在路上找到障碍物,那么它们并不存在。我该怎么计算两个特定站点之间的距离?

1 个答案:

答案 0 :(得分:1)

似乎对关系存在误解。关系成员不一定必须排序。因此,如果有必要,您可能必须自己对成员进行排序。

你可以看看JOSM,它有各种类型关系的整齐排序算法。但我认为它不能将角色的成员停在正确的位置。这并不总是可行的,因为不一定必须在具有stop角色的每个节点处拆分方式。这也意味着单一方式可以包含多个具有停止角色的节点,从而无法正确排序关系成员。除非你做一些预处理,以便相应地分割各种方式。

为了计算每个停止点之间的距离,似乎没有必要对元素进行排序。只需按照这种方式迭代所有每个节点,并检查每个节点是否在相应的关系中具有停止角色。当到达路的尽头时,继续使用在其开始或结束时共享相同节点的那个节点,并且该节点也是该关系的成员。