I'm trying to plot multiple infrastructure networks(for example streets, rails and buildings) in the same figure using OSMnx but not really having success.
This is one of my attempts:
import osmnx as ox
dist = 2000
point = (41.877092, -87.628)
north, south, east, west = ox.bbox_from_point(point, distance=dist)
bbox_proj = ox.bbox_from_point(point, dist, project_utm=True)
streets = ox.core.osm_net_download(
north=north,
south=south,
east=east,
west=west,
infrastructure='way["highway"]'
)
railways = ox.core.osm_net_download(
north=north,
south=south,
east=east,
west=west,
infrastructure='way["railway"]'
)
buildings = ox.core.osm_net_download(
north=north,
south=south,
east=east,
west=west,
infrastructure='way["building"]'
)
streets[0]['elements'] = streets[0]['elements'] + railways[0]['elements'] + buildings[0]['elements']
net = streets
G = ox.core.create_graph(net)
G = ox.truncate_graph_bbox(G, north, south, east, west, truncate_by_edge=True)
G = ox.project_graph(G)
_, _ = ox.plot.plot_graph(G, bbox=bbox_proj, fig_height=10, node_size=0, edge_color='black', edge_linewidth=0.5, save=True)
Result of this code is only ploting the first 2 infrastructures, streets and rails, but not buildings:
Result of ox.plot_figure_ground (only plots streets infrastructure):
Buildings data is being downloaded despite not being plotted(I know about plot_buildings but I don't want colored buildings, just lines).
Before this I was trying to find a way to add multiple filters all at once in the infrastructure
parameter. Something like:
nets = ox.core.osm_net_download(
north=north,
south=south,
east=east,
west=west,
infrastructure='way["highway"],way["railway"],way["buildings"]'
)
But not sure if this is possible.
Any way to plot more than two of them in one figure and, if posible, concisely in OSMnx?
See Question&Answers more detail:
os