【发布时间】:2016-12-18 19:51:48
【问题描述】:
我有一个 OSM 节点 ID/经纬度,用于道路上的一个点(比如 Z 点)。如何找到之前需要经过的 x 个点才能在各个方向到达 Z?我在想立交桥 API 可以帮助我。但它只能返回带有标签的点。我无法让它返回道路/路上的节点 ID。
您能否建议任何可以提供帮助的 API/教程?
【问题讨论】:
标签: openstreetmap overpass-api
我有一个 OSM 节点 ID/经纬度,用于道路上的一个点(比如 Z 点)。如何找到之前需要经过的 x 个点才能在各个方向到达 Z?我在想立交桥 API 可以帮助我。但它只能返回带有标签的点。我无法让它返回道路/路上的节点 ID。
您能否建议任何可以提供帮助的 API/教程?
【问题讨论】:
标签: openstreetmap overpass-api
如果我没记错的话,您要问的是:给定一个 osm 节点 id,坐标为 x 和 y,为了从起点到达那里,需要做什么? 如果这是一个很好的问题,这是一个面向图形的问题;您应该创建一个 grah,然后使用一些算法来找到起点和终点之间的所有路线;你应该使用一些面向图形的软件.. 像 neo4j 和空间贡献(https://github.com/neo4j-contrib/spatial) 过去我建立了一个项目,我在其中读取 osmfile,创建图形并使用 A* 算法;你可以看看https://github.com/angeloimm/neo4jAstarTest
【讨论】:
我建议从阅读 OSM elements 开始,尤其是节点和方式。然后看看OSM XML format。打开 OSM 编辑器(例如iD)并查看原始数据也可能会有所帮助。
节点本身没有任何顺序或“下一个节点”。节点可以是一种或多种方式的一部分。每种方式都引用一个有序节点列表。所以你必须查看一个节点所属的所有路,然后查看该路的节点列表来确定前一个和下一个节点。如果节点位于一条路的开头或结尾,那么您必须查看是否有一条或多条连续的路。连续的方式在它们的开始/结束处共享同一个节点。
【讨论】: