Можно ли рисовать пути в Folium? - PullRequest
1 голос
/ 07 марта 2020

Я прочитал много документов, связанных с этим, но не могу найти то, что ищу.

Я хочу проложить пешеходные дорожки между двумя точками. Является ли это возможным? если нет, есть ли какая-либо другая библиотека в python для этой цели?

1 Ответ

1 голос
/ 09 марта 2020

Конечно, вы можете. Используйте 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


EDIT 1

Чтобы нарисовать пешеходную дорожку между двумя точками, вы можете использовать комбинацию OSMnx и networkx:

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')

и вы получите:

enter image description here


РЕДАКТИРОВАТЬ 2

Для карты типа фолиума вы можете использовать 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:

enter image description here

...