Как `` увеличить '' до определенной области c на графике osmnx - PullRequest
2 голосов
/ 09 июля 2020

У меня есть график osmnx с двумя маршрутами, но карта довольно обширна, поэтому я не могу правильно видеть маршруты. Есть ли быстрый способ ограничить мой сюжет, чтобы как бы «увеличить», используя, например, bbox? Я знаю, что могу искать районы, а не целый город, мне просто было любопытно узнать, есть ли самый быстрый способ «увеличить» график.

Вот код:

import osmnx as ox
import igraph as ig
import matplotlib.pyplot as plt
import pandas as pd
import networkx as nx
import numpy as np
import matplotlib as mpl
import random as rd
from IPython.display import clear_output
import matplotlib.cm as cm
ox.config(log_console=True, use_cache=True)

%%time
city = 'Portugal, Lisbon'
G = ox.graph_from_place(city, network_type='drive', simplify=True)

G_nx = nx.relabel.convert_node_labels_to_integers(G)
weight = 'length'
nodes, edges = ox.graph_to_gdfs(G_nx, nodes=True, edges=True)
origin = [8371, 5983, 6301, 9086]

orig = origin[1]
dest = 9590
route_1 = nx.shortest_path(G_nx, orig, dest, weight='length')
route_2 = nx.shortest_path(G_nx, dest, orig, weight='length')

fig, ax = ox.plot_graph_routes(G_nx, routes=[route_1, route_2], route_colors=['r', 'y'],
                               route_linewidth=6, node_size=0, figsize=(20,20))

Вот график:

введите описание изображения здесь

1 Ответ

3 голосов
/ 10 июля 2020

Передайте bbox (ограничивающий прямоугольник) как ключевое слово arg в plot_graph_routes , который передаст его plot_graph через plot_graph_route, как описано в документации. В документации объясняется, что таким образом вы можете ограничить график ограничивающей рамкой, и это продемонстрировано в примерах записных книжек .

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

# get a graph
G = ox.graph_from_place('Piedmont, CA, USA', network_type='drive')

# get 2 shortest paths
r1 = nx.shortest_path(G, list(G)[0], list(G)[-1], weight='length')
r2 = nx.shortest_path(G, list(G)[10], list(G)[-10], weight='length')

# constrain plot to a bounding box
pt = ox.graph_to_gdfs(G, edges=False).unary_union.centroid
bbox = ox.utils_geo.bbox_from_point((pt.y, pt.x), dist=500)
fig, ax = ox.plot_graph_routes(G, [r1, r2], ['y', 'r'], bbox=bbox)

OSMnx, построение нескольких маршрутов и приближение к ограничивающей рамке

...