【问题标题】:how to create a route knowing starting point, ending point and distance to travel如何创建一条知道起点、终点和距离的路线
【发布时间】:2020-11-27 12:03:42
【问题描述】:

我正在尝试使用 python 在地图上创建步行路径。而且我不仅需要设置起点和终点,还需要设置旅行的距离。所以我不能只创建一条从点到点的最短路径。 我从 osmnx 和 networkx 开始。我创建了不同的路径,但我无法检查它们的距离。在文档中找不到任何内容。

这个想法是制作一个可以创建步行路径的电报机器人,因此重点是步行 5 公里。机器人很简单,但我不知道如何根据我想要旅行的距离(包括起点和终点)创建路线

【问题讨论】:

  • 让我再说一遍。我想设置我想走多少公里,并设置我的起点和终点。然后我想创建所需的路径。

标签: python networkx openstreetmap osmnx


【解决方案1】:

我不清楚这里的确切问题是什么,但至于:

我从 osmnx 和 networkx 开始。我创建了不同的路径,但我无法检查它们的距离。在文档中找不到任何内容。

此功能在 OSMnx 使用示例/文档以及 NetworkX 文档中都有说明:

import networkx as nx
import osmnx as ox
ox.config(use_cache=True, log_console=True)

# get a graph, an origin, and a destination
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive')
orig, dest = list(G)[0], list(G)[-10]

# calculate the shortest path from origin to destination
path = nx.shortest_path(G, orig, dest, weight='length')

# the length of each edge traversed along the path
lengths = ox.utils_graph.get_route_edge_attributes(G, path, 'length')

# the total length of the path
path_length = sum(lengths)

# or just directly calculate the shortest path's length from origin to destination
path_length = nx.shortest_path_length(G, orig, dest, weight='length')

如果您想找到至少 L 长度的最短路径,您可以使用 OSMnx 的 k_shortest_paths 函数然后遍历路径,直到找到长度 >= L 的路径(确定每个路径的长度,如上面的代码sn-p)。

L = 3400
paths = ox.k_shortest_paths(G, orig, dest, 1000, 'length')
for i, path in enumerate(paths):
    length = sum(ox.utils_graph.get_route_edge_attributes(G, path, 'length'))
    if length >= L:
        break
i, length, path

【讨论】:

  • 这样就行了。但仅限于短距离。如果我想在同一个地方开始和结束我的路径并且我想走很多路 - 这个算法将花费大量时间来创建所有不同的路径你能建议什么吗?
  • 例如:我想走 5000m paths = ox.k_shortest_paths(G, origin_node, destination_node, 1010, 'length') 这会给我 1233.9 m 如果我将 k 增加到 3000:paths = ox.k_shortest_paths(G, origin_node, destination_node, 3000, 'length') 我会得到 1260.129 m
  • 你有什么想法吗?
猜你喜欢
  • 2011-01-12
  • 2013-05-11
  • 2015-05-13
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多