0

我想查询Overpass Api以找出特殊关系(铁路)的距离。请求很好,并返回我所有relation感兴趣waynode对象。汉堡示例:

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

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

但是,relation该类型的成员node(大多数情况下,他们有一个role“停止”)似乎代表了该类型的正确停止顺序relation。但不是在成员之间,他们大致在最后。如果我尝试查看道路内部的停靠点,它们并不都存在。我应该如何计算两个特定站点之间的距离?

4

1 回答 1

1

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

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

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

于 2014-11-05T08:00:40.870 回答