我的目标是得到在特定地区所有可选路线的清单。我想使用OSM来实现这个数据路由意味着从第一个交叉口到第二个交叉口的一对或交叉口。
在图中的例子中:
可选路线如下:
到目前为止,我已经在天桥-turbo站点上尝试了这个代码:
[bbox:{{bbox}}];
way[highway~"^(residential)$"]->.minor;
node(w.minor)(w.minor);
out;
输出是交叉点,但是:
发布于 2018-10-25 22:03:35
如果您喜欢使用Java,请考虑查看一下Atlas。Atlas是OSM数据的内存表示形式,它允许您创建表示街道网络的图形。有一个阿特拉斯API层,用于连接、路由和空间搜索。针对您的特定需求--有一个路由的概念--它维护OSM方法和节点,指定两个节点之间的路径或路径。有办法得到最优的路线或获得所有可能的路线。
为了开始,我建议如下:
加载OSM文件的示例代码:
public class TestAtlasTestRule extends CoreTestRule
{
@TestAtlas(loadFromJosmOsmResource = "yourOsmFile.osm")
private Atlas yourAtlasFile;
public Atlas getAtlasFile()
{
return this.yourAtlasFile;
}
}
获取路线的示例代码:
// To get the shortest route
final Route shortestRoute = AStarRouter.dijkstra(yourAtlasFile, distanceThreshold).route(startNode, endNode);
// To get all the routes
final Set<Route> allRoutes = AllPathsRouter.allRoutes(startEdge, endEdge, comparatorThatEnforcesRouteOrdering);
https://stackoverflow.com/questions/52927973
复制相似问题