在Folium中是否可以绘制路径?

4

我阅读了许多与此相关的文档,但找不到我要寻找的东西。

我想绘制两点之间的步行路径。是否可能?如果不是,是否有其他用于此目的的Python库?


参见:https://dev59.com/AbTma4cB1Zd3GeqPzgEB - gboeing
2个回答

23

当然可以。使用PolyLine

import folium

m = folium.Map(location=[40.720, -73.993],
              zoom_start=15)

loc = [(40.720, -73.993),
       (40.721, -73.996)]

folium.PolyLine(loc,
                color='red',
                weight=15,
                opacity=0.8).add_to(m)
m

然后你将获得:

enter image description here


编辑1

为了在两点之间绘制步行路径,您可以使用OSMnxnetworkx的组合:

import osmnx as ox
import networkx as nx

ox.config(log_console=True,
          use_cache=True)

G_walk = ox.graph_from_place('Manhattan Island, New York City, New York, USA',
                             network_type='walk')

orig_node = ox.get_nearest_node(G_walk,
                                (40.748441, -73.985664))

dest_node = ox.get_nearest_node(G_walk,
                                (40.748441, -73.4))

route = nx.shortest_path(G_walk, orig_node, dest_node, weight='length')

fig, ax = ox.plot_graph_route(G_walk,
                              route,
                              node_size=0,
                              save=True,
                              file_format='svg',
                              filename='test')

然后你会得到:

在此输入图片描述


编辑2

对于类似于folium的地图,您可以使用plot_route_folium

import osmnx as ox
import networkx as nx

ox.config(log_console=True, use_cache=True)

G_walk = ox.graph_from_place('Manhattan Island, New York City, New York, USA',
                             network_type='walk')

orig_node = ox.get_nearest_node(G_walk,
                                (40.748441, -73.985664))

dest_node = ox.get_nearest_node(G_walk,
                                (40.748441, -73.4))

route = nx.shortest_path(G_walk,
                         orig_node,
                         dest_node,
                         weight='length')

route_map = ox.plot_route_folium(G_walk, route)

route_map.save('route.html')

你会得到一个有用的HTML文件:

输入图像描述


它是在绘制行走路径还是只是草图一条线? - Graphics Engineer
这是一条路径,正如您在标题“是否可以在Folium中绘制路径?”中所询问的。您是在寻找明确的步行路径吗? - sentence
有没有可能在不使用get_nearest_node函数的情况下绘制路线?例如,如果我有两个精确的房屋地址。 - hegdep
有没有办法将这些点变成地图上可以更新的变量? - tjaqu787

0
如果您正在使用Openstreetmap和folium,那么可以按照以下步骤操作。虽然这是用于驾车路线的方向和时间,但您可以通过此链接进行操作https://pastebin.ubuntu.com/p/7TtnBxWPNr/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接