This Jupyter notebook demostrates the network anaysis, including finding shortest path and generate isochrones from the road network accessibility.
We are using Urbana-Champaign, IL, US as our study area. And this notebook uses geospatial libraries to simulate the shortest path from point to another and isochrones analysis with the problem of road network accessibility.
The first one is an interactive demo that shows user how to use osmnx and openstreetmap to find the shortest path between two locations in the real world.
OSMnx is a python toolkit for street networks, incluging retrieving, modeling, analyzing, and visualizing street networks and other spatial data from OpenStreetMap.
Boeing, G. 2017. "OSMnx: New Methods for Acquiring, Constructing, Analyzing, and Visualizing Complex Street Networks." Computers, Environment and Urban Systems 65, 126-139. doi:10.1016/j.compenvurbsys.2017.05.004
Import numpy, osmnx, networkx and other libraries available in CyberGIS-Jupyter to set up an environment to run this notebook.
import numpy as np import osmnx as ox import networkx as nx import folium import matplotlib.pyplot as plt #Enable inline plotting of maps %matplotlib inline print (ox.__version__) ox.config(log_console=True, use_cache=True)
We define our study area in this demo as Uraban-Champaign, IL, US
#Define the study area places = ['Champaign, Illinois','Urbana, Illinois']
Read the network file at Urbana-Champaign and plot the area
#Note - this may take some time... # Choose one type of network #[ 'all_private','all','drive','drive_service', 'bike','walk']:# G = ox.graph_from_place(places, network_type='drive') #The step give projects to UTM #ox.plot_graph(ox.project_graph(G)); #ox.plot_graph(G); ox.plot_graph(G, fig_height=20, fig_width=20, edge_color='black') #We do not save files in order to save time #filenames = 'Urban-Champaign-Net' #ox.save_graph_shapefile(G, filename=filenames) #ox.save_graphml(G, filename='Urban-Champaign-Net.graphml')
(<Figure size 1440x1440 with 1 Axes>, <matplotlib.axes._subplots.AxesSubplot at 0x7f6c64178b38>)
Plot the origin and destination point in the network graph of Urbana-Champaign, the origin is shown in red and destination is shown in blue.
#origin = ox.utils.geocode('2012 S Orchard St,Urbana, IL') #destination = ox.utils.geocode('1301 W Green St, Urbana, IL') origin = (40.097468, -88.214171) destination =(40.10948505, -88.2260316492452)
Show the origin point and destination point on the map
fig, ax = ox.plot_graph(G, fig_height=20, fig_width=20, show=False, close=False, edge_color='black') ax.scatter(origin, origin, c='red', s=100) ax.scatter(destination, destination, c='blue', s=100) plt.show()