!pip install geopandas
import folium
print(folium.__version__)
0.12.1
!pip install folium --upgrade
# Import libraries
import geopandas as gpd
import pandas as pd
import folium
import branca
import requests
import json
from folium.features import GeoJson, GeoJsonTooltip, GeoJsonPopup
url_data = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/US_Unemployment_Oct2012.csv'
state_data = pd.read_csv(url_data)
#print(state_data.head())
response = requests.get(r"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json")
data = response.json()
states = gpd.GeoDataFrame.from_features(data, crs='EPSG:4326')
#print(states.head())
# Get match dataframe
response = requests.get('https://gist.githubusercontent.com/tvpmb/4734703/raw/b54d03154c339ed3047c66fefcece4727dfc931a/US%2520State%2520List')
abbrs = pd.read_json(response.text)
statesmerge = states.merge(abbrs, how='left', left_on='name', right_on='name')
statesmerge['geometry'] = statesmerge.geometry.simplify(.05)
#print(statesmerge.head())
statesmerge['unemployment'] = statesmerge.merge(state_data, how='left', left_on='alpha-2', right_on='State')['Unemployment']
print(statesmerge.head())
m = folium.Map(location=[35.3, -97.6], zoom_start=4)
###
# UPDATE to tooltip
popup = GeoJsonPopup(
fields=['name','alpha-2', 'unemployment'],
aliases=['State: ', 'Abbr: ' , "% Unemployment:"],
localize=True,
labels=True,
style="background-color: yellow; border-radius: 90%",
)
tooltip = GeoJsonTooltip(
fields=['name', "unemployment"],
aliases=['State: ', "% Unemployment:"],
localize=True,
sticky=False,
labels=True,
style="""
background-color: #F0EFEF;
border: 2px solid black;
border-radius: 3px;
box-shadow: 3px;
""",
max_width=800,
)
###
g = folium.GeoJson(
statesmerge,
style_function=lambda x: {
"color": "black",
"fillOpacity": 0.4,
},
tooltip=tooltip,
popup=popup
).add_to(m)
m
geometry ... unemployment 0 POLYGON ((-87.35930 35.00118, -85.60667 34.984... ... 7.1 1 MULTIPOLYGON (((-131.60202 55.11798, -131.5691... ... 6.8 2 POLYGON ((-109.04250 37.00026, -109.04798 31.3... ... 8.1 3 POLYGON ((-94.47384 36.50186, -90.15254 36.496... ... 7.2 4 POLYGON ((-123.23326 42.00619, -120.00186 41.9... ... 10.1 [5 rows x 4 columns]
# Import libraries
import geopandas as gpd
import pandas as pd
import folium
import branca
import requests
import json
from folium.features import GeoJson, GeoJsonTooltip, GeoJsonPopup
url_data = 'https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/US_Unemployment_Oct2012.csv'
state_data = pd.read_csv(url_data)
response = requests.get(r"https://raw.githubusercontent.com/python-visualization/folium/master/examples/data/us-states.json")
data = response.json()
states = gpd.GeoDataFrame.from_features(data, crs='EPSG:4326')
# Get match dataframe
response = requests.get('https://gist.githubusercontent.com/tvpmb/4734703/raw/b54d03154c339ed3047c66fefcece4727dfc931a/US%2520State%2520List')
abbrs = pd.read_json(response.text)
statesmerge = states.merge(abbrs, how='left', left_on='name', right_on='name')
statesmerge['geometry'] = statesmerge.geometry.simplify(.05)
#print(statesmerge.head())
statesmerge['unemployment'] = statesmerge.merge(state_data, how='left', left_on='alpha-2', right_on='State')['Unemployment']
print(statesmerge.columns)
####
# UPDATE COLORMAP
colormap = branca.colormap.StepColormap(
vmin=statesmerge['unemployment'].quantile(0.0),
vmax=statesmerge['unemployment'].quantile(1),
colors=['red','orange', 'yellow','green','darkgreen'],
caption="Unemployment in USA (%) - 2021",
)
####
m = folium.Map(location=[35.3, -97.6], zoom_start=4)
popup = GeoJsonPopup(
fields=['name','alpha-2', 'unemployment'],
aliases=['State: ', 'Abbr: ' , "% Unemployment:"],
localize=True,
labels=True,
style="background-color: yellow;",
)
tooltip = GeoJsonTooltip(
fields=['name', "unemployment"],
aliases=['State: ', "% Unemployment:"],
localize=True,
sticky=False,
labels=True,
style="""
background-color: #F0EFEF;
border: 2px solid black;
border-radius: 3px;
box-shadow: 3px;
""",
max_width=800,
)
colormap.add_to(m)
g = folium.GeoJson(
statesmerge,
style_function=lambda x: {
"fillColor": colormap(x["properties"]["unemployment"])
if x["properties"]["unemployment"] is not None
else "transparent",
"color": "black",
"fillOpacity": 0.4,
},
tooltip=tooltip,
popup=popup
).add_to(m)
m.save("mychoropleth.html")
#m
Index(['geometry', 'name', 'alpha-2', 'unemployment'], dtype='object')
from google.colab import files
files.download('mychoropleth.html')
!pip install pydeck
Collecting pydeck Downloading https://files.pythonhosted.org/packages/d6/bc/f0e44828e4290367c869591d50d3671a4d0ee94926da6cb734b7b200308c/pydeck-0.6.2-py2.py3-none-any.whl (4.2MB) |████████████████████████████████| 4.2MB 8.3MB/s Requirement already satisfied: jinja2>=2.10.1 in /usr/local/lib/python3.7/dist-packages (from pydeck) (2.11.3) Requirement already satisfied: ipywidgets>=7.0.0 in /usr/local/lib/python3.7/dist-packages (from pydeck) (7.6.3) Collecting ipykernel>=5.1.2; python_version >= "3.4" Downloading https://files.pythonhosted.org/packages/13/8e/1d868a67488f99692c2604907cdb87ab7da586fa114d5f0f177c83f1aee1/ipykernel-6.0.2-py3-none-any.whl (122kB) |████████████████████████████████| 122kB 39.9MB/s Requirement already satisfied: traitlets>=4.3.2 in /usr/local/lib/python3.7/dist-packages (from pydeck) (5.0.5) Requirement already satisfied: numpy>=1.16.4 in /usr/local/lib/python3.7/dist-packages (from pydeck) (1.19.5) Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from jinja2>=2.10.1->pydeck) (2.0.1) Requirement already satisfied: widgetsnbextension~=3.5.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=7.0.0->pydeck) (3.5.1) Requirement already satisfied: nbformat>=4.2.0 in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=7.0.0->pydeck) (5.1.3) Requirement already satisfied: jupyterlab-widgets>=1.0.0; python_version >= "3.6" in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=7.0.0->pydeck) (1.0.0) Requirement already satisfied: ipython>=4.0.0; python_version >= "3.3" in /usr/local/lib/python3.7/dist-packages (from ipywidgets>=7.0.0->pydeck) (5.5.0) Requirement already satisfied: tornado<7.0,>=4.2 in /usr/local/lib/python3.7/dist-packages (from ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (5.1.1) Requirement already satisfied: debugpy<2.0,>=1.0.0 in /usr/local/lib/python3.7/dist-packages (from ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (1.0.0) Collecting importlib-metadata<4; python_version < "3.8.0" Downloading https://files.pythonhosted.org/packages/52/d0/bdb31463f2d9ca111e39b268518e9baa3542ef73ca449b711a7b4da69764/importlib_metadata-3.10.1-py3-none-any.whl Requirement already satisfied: matplotlib-inline<0.2.0,>=0.1.0 in /usr/local/lib/python3.7/dist-packages (from ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (0.1.2) Requirement already satisfied: jupyter-client<7.0 in /usr/local/lib/python3.7/dist-packages (from ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (5.3.5) Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.7/dist-packages (from traitlets>=4.3.2->pydeck) (0.2.0) Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.7/dist-packages (from widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (5.3.1) Requirement already satisfied: jupyter-core in /usr/local/lib/python3.7/dist-packages (from nbformat>=4.2.0->ipywidgets>=7.0.0->pydeck) (4.7.1) Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /usr/local/lib/python3.7/dist-packages (from nbformat>=4.2.0->ipywidgets>=7.0.0->pydeck) (2.6.0) Requirement already satisfied: prompt-toolkit<2.0.0,>=1.0.4 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (1.0.18) Requirement already satisfied: pygments in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (2.6.1) Requirement already satisfied: pickleshare in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (0.7.5) Requirement already satisfied: decorator in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (4.4.2) Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (57.2.0) Requirement already satisfied: pexpect; sys_platform != "win32" in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (4.8.0) Requirement already satisfied: simplegeneric>0.8 in /usr/local/lib/python3.7/dist-packages (from ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (0.8.1) Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata<4; python_version < "3.8.0"->ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (3.5.0) Requirement already satisfied: typing-extensions>=3.6.4; python_version < "3.8" in /usr/local/lib/python3.7/dist-packages (from importlib-metadata<4; python_version < "3.8.0"->ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (3.7.4.3) Requirement already satisfied: pyzmq>=13 in /usr/local/lib/python3.7/dist-packages (from jupyter-client<7.0->ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (22.1.0) Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from jupyter-client<7.0->ipykernel>=5.1.2; python_version >= "3.4"->pydeck) (2.8.1) Requirement already satisfied: nbconvert in /usr/local/lib/python3.7/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (5.6.1) Requirement already satisfied: terminado>=0.8.1 in /usr/local/lib/python3.7/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.10.1) Requirement already satisfied: Send2Trash in /usr/local/lib/python3.7/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (1.7.1) Requirement already satisfied: wcwidth in /usr/local/lib/python3.7/dist-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (0.2.5) Requirement already satisfied: six>=1.9.0 in /usr/local/lib/python3.7/dist-packages (from prompt-toolkit<2.0.0,>=1.0.4->ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (1.15.0) Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.7/dist-packages (from pexpect; sys_platform != "win32"->ipython>=4.0.0; python_version >= "3.3"->ipywidgets>=7.0.0->pydeck) (0.7.0) Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (1.4.3) Requirement already satisfied: defusedxml in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.7.1) Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.8.4) Requirement already satisfied: testpath in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.5.0) Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.3) Requirement already satisfied: bleach in /usr/local/lib/python3.7/dist-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (3.3.0) Requirement already satisfied: webencodings in /usr/local/lib/python3.7/dist-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (0.5.1) Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (21.0) Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.5.0->ipywidgets>=7.0.0->pydeck) (2.4.7) ERROR: ipykernel 6.0.2 has requirement ipython<8.0,>=7.23.1, but you'll have ipython 5.5.0 which is incompatible. ERROR: google-colab 1.0.0 has requirement ipykernel~=4.10, but you'll have ipykernel 6.0.2 which is incompatible. Installing collected packages: importlib-metadata, ipykernel, pydeck Found existing installation: importlib-metadata 4.6.1 Uninstalling importlib-metadata-4.6.1: Successfully uninstalled importlib-metadata-4.6.1 Found existing installation: ipykernel 4.10.1 Uninstalling ipykernel-4.10.1: Successfully uninstalled ipykernel-4.10.1 Successfully installed importlib-metadata-3.10.1 ipykernel-6.0.2 pydeck-0.6.2
MAPBOX_KEY = "pk.eyJ1IjoiZXJpY2tnbiIsImEiOiJjazJtMHRncTcwY3p3M2JxbDh4M2YxdnNrIn0.80yDIJPBHpZJvO4ZREpHJg"
import pydeck as pdk
# 2014 locations of car accidents in the UK'
UK_ACCIDENTS_DATA = ('https://raw.githubusercontent.com/uber-common/'
'deck.gl-data/master/examples/3d-heatmap/heatmap-data.csv')
# Define a layer to display on a map
layer = pdk.Layer(
'HexagonLayer',
UK_ACCIDENTS_DATA,
get_position=['lng', 'lat'],
auto_highlight=True,
elevation_scale=50,
pickable=True,
elevation_range=[0, 3000],
extruded=True,
coverage=1)
# Set the viewport location
view_state = pdk.ViewState(
longitude=-1.415,
latitude=52.2323,
zoom=6,
min_zoom=5,
max_zoom=15,
pitch=40.5,
bearing=-27.36)
# Render
r = pdk.Deck(layers=[layer], initial_view_state=view_state)
r.to_html('demo.html', notebook_display=False)
from google.colab import files
files.download('demo.html')
"""
ArcLayer
========
Map of commutes to work within a segment of downtown San Francisco using a deck.gl ArcLayer.
Green indicates a start point, and red indicates the destination.
The data is collected by the US Census Bureau and viewable in the 2017 LODES data set: https://lehd.ces.census.gov/data/
"""
import pydeck as pdk
import pandas as pd
DATA_URL = "https://raw.githubusercontent.com/ajduberstein/sf_public_data/master/bay_area_commute_routes.csv"
# A bounding box for downtown San Francisco, to help filter this commuter data
DOWNTOWN_BOUNDING_BOX = [
-122.43135291617365,
37.766492914983864,
-122.38706428091974,
37.80583561830737,
]
def in_bounding_box(point):
"""Determine whether a point is in our downtown bounding box"""
lng, lat = point
in_lng_bounds = DOWNTOWN_BOUNDING_BOX[0] <= lng <= DOWNTOWN_BOUNDING_BOX[2]
in_lat_bounds = DOWNTOWN_BOUNDING_BOX[1] <= lat <= DOWNTOWN_BOUNDING_BOX[3]
return in_lng_bounds and in_lat_bounds
df = pd.read_csv(DATA_URL)
# Filter to bounding box
df = df[df[["lng_w", "lat_w"]].apply(lambda row: in_bounding_box(row), axis=1)]
GREEN_RGB = [0, 255, 0, 40]
RED_RGB = [255, 0, 0, 40]
# Specify a deck.gl ArcLayer
arc_layer = pdk.Layer(
"ArcLayer",
data=df,
get_width="S000 * 2",
get_source_position=["lng_h", "lat_h"],
get_target_position=["lng_w", "lat_w"],
get_tilt=15,
get_source_color=RED_RGB,
get_target_color=GREEN_RGB,
pickable=True,
auto_highlight=True,
)
view_state = pdk.ViewState(latitude=37.7576171, longitude=-122.5776844, bearing=45, pitch=50, zoom=8,)
TOOLTIP_TEXT = {"html": "{S000} jobs <br /> Home of commuter in RED; work location in GREEN"}
r = pdk.Deck(arc_layer, initial_view_state=view_state, tooltip=TOOLTIP_TEXT)
r.to_html("arc_layer.html", notebook_display=False)
from google.colab import files
files.download('arc_layer.html')
"""
TerrainLayer
===========
Extruded terrain using AWS Open Data Terrain Tiles and Mapbox Satellite imagery
"""
import pydeck as pdk
import os
# Import Mapbox API Key from environment
#MAPBOX_API_KEY = os.environ["MAPBOX_API_KEY"]
MAPBOX_API_KEY = MAPBOX_KEY
# AWS Open Data Terrain Tiles
TERRAIN_IMAGE = '"https://s3.amazonaws.com/elevation-tiles-prod/terrarium/{z}/{x}/{y}.png"'
# Define how to parse elevation tiles
ELEVATION_DECODER = {"rScaler": 256, "gScaler": 1, "bScaler": 1 / 256, "offset": -32768}
SURFACE_IMAGE = '"https://api.mapbox.com/v4/mapbox.satellite/{{z}}/{{x}}/{{y}}@2x.png?access_token={}"'.format(
MAPBOX_API_KEY
)
terrain_layer = pdk.Layer(
"TerrainLayer", data=None, elevation_decoder=ELEVATION_DECODER, texture=SURFACE_IMAGE, elevation_data=TERRAIN_IMAGE
)
view_state = pdk.ViewState(latitude=46.24, longitude=-122.18, zoom=11.5, bearing=140, pitch=60)
r = pdk.Deck(terrain_layer, initial_view_state=view_state)
r.to_html("terrain_layer.html", notebook_display=False)
from google.colab import files
files.download('terrain_layer.html')
"""
PathLayer
=========
Locations of the Bay Area Rapid Transit lines.
"""
import pandas as pd
import pydeck as pdk
DATA_URL = "https://raw.githubusercontent.com/visgl/deck.gl-data/master/website/bart-lines.json"
df = pd.read_json(DATA_URL)
def hex_to_rgb(h):
h = h.lstrip("#")
return tuple(int(h[i : i + 2], 16) for i in (0, 2, 4))
df["color"] = df["color"].apply(hex_to_rgb)
view_state = pdk.ViewState(latitude=37.782556, longitude=-122.3484867, zoom=10)
layer = pdk.Layer(
type="PathLayer",
data=df,
pickable=True,
get_color="color",
width_scale=20,
width_min_pixels=2,
get_path="path",
get_width=5,
)
r = pdk.Deck(layers=[layer], mapbox_key=MAPBOX_KEY, initial_view_state=view_state, tooltip={"text": "{name}"})
r.to_html("path_layer.html", notebook_display=False)
from google.colab import files
files.download('path_layer.html')
More examples at: https://github.com/visgl/deck.gl/tree/master/bindings/pydeck/examples
!pip install osmnx
Collecting osmnx Downloading https://files.pythonhosted.org/packages/2a/49/401f47ea2daa7b00eac844f5324d9db67a2b2b6f24bc1ae7c56c6f2f0a9b/osmnx-1.1.1-py2.py3-none-any.whl (93kB) |████████████████████████████████| 102kB 6.0MB/s Collecting matplotlib>=3.3 Downloading https://files.pythonhosted.org/packages/24/33/5568d443ba438d95d4db635dd69958056f087e57e1026bee56f959d53f9d/matplotlib-3.4.2-cp37-cp37m-manylinux1_x86_64.whl (10.3MB) |████████████████████████████████| 10.3MB 12.2MB/s Requirement already satisfied: pandas>=1.1 in /usr/local/lib/python3.7/dist-packages (from osmnx) (1.1.5) Collecting pyproj>=2.6 Downloading https://files.pythonhosted.org/packages/11/1d/1c54c672c2faf08d28fe78e15d664c048f786225bef95ad87b6c435cf69e/pyproj-3.1.0-cp37-cp37m-manylinux2010_x86_64.whl (6.6MB) |████████████████████████████████| 6.6MB 33.3MB/s Collecting requests>=2.25 Downloading https://files.pythonhosted.org/packages/92/96/144f70b972a9c0eabbd4391ef93ccd49d0f2747f4f6a2a2738e99e5adc65/requests-2.26.0-py2.py3-none-any.whl (62kB) |████████████████████████████████| 71kB 8.4MB/s Requirement already satisfied: Shapely>=1.7 in /usr/local/lib/python3.7/dist-packages (from osmnx) (1.7.1) Requirement already satisfied: networkx>=2.5 in /usr/local/lib/python3.7/dist-packages (from osmnx) (2.5.1) Collecting Rtree>=0.9 Downloading https://files.pythonhosted.org/packages/51/05/5a67111cee91d2165a2bcb855f442186e3d76ddef834596cc84d4875c401/Rtree-0.9.7-cp37-cp37m-manylinux2010_x86_64.whl (994kB) |████████████████████████████████| 1.0MB 32.4MB/s Requirement already satisfied: numpy>=1.19 in /usr/local/lib/python3.7/dist-packages (from osmnx) (1.19.5) Collecting geopandas>=0.9 Downloading https://files.pythonhosted.org/packages/d7/bf/e9cefb69d39155d122b6ddca53893b61535fa6ffdad70bf5ef708977f53f/geopandas-0.9.0-py2.py3-none-any.whl (994kB) |████████████████████████████████| 1.0MB 29.0MB/s Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.3->osmnx) (7.1.2) Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.3->osmnx) (2.8.1) Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.3->osmnx) (0.10.0) Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.3->osmnx) (1.3.1) Requirement already satisfied: pyparsing>=2.2.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib>=3.3->osmnx) (2.4.7) Requirement already satisfied: pytz>=2017.2 in /usr/local/lib/python3.7/dist-packages (from pandas>=1.1->osmnx) (2018.9) Requirement already satisfied: certifi in /usr/local/lib/python3.7/dist-packages (from pyproj>=2.6->osmnx) (2021.5.30) Requirement already satisfied: charset-normalizer~=2.0.0; python_version >= "3" in /usr/local/lib/python3.7/dist-packages (from requests>=2.25->osmnx) (2.0.2) Requirement already satisfied: idna<4,>=2.5; python_version >= "3" in /usr/local/lib/python3.7/dist-packages (from requests>=2.25->osmnx) (2.10) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests>=2.25->osmnx) (1.24.3) Requirement already satisfied: decorator<5,>=4.3 in /usr/local/lib/python3.7/dist-packages (from networkx>=2.5->osmnx) (4.4.2) Collecting fiona>=1.8 Downloading https://files.pythonhosted.org/packages/9c/fc/9807326c37a6bfb2393ae3e1cca147aa74844562c4d5daa782d6e97ad2bc/Fiona-1.8.20-cp37-cp37m-manylinux1_x86_64.whl (15.4MB) |████████████████████████████████| 15.4MB 170kB/s Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.7->matplotlib>=3.3->osmnx) (1.15.0) Collecting munch Downloading https://files.pythonhosted.org/packages/cc/ab/85d8da5c9a45e072301beb37ad7f833cd344e04c817d97e0cc75681d248f/munch-2.5.0-py2.py3-none-any.whl Requirement already satisfied: click>=4.0 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas>=0.9->osmnx) (7.1.2) Requirement already satisfied: attrs>=17 in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas>=0.9->osmnx) (21.2.0) Collecting click-plugins>=1.0 Downloading https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl Collecting cligj>=0.5 Downloading https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from fiona>=1.8->geopandas>=0.9->osmnx) (57.2.0) ERROR: google-colab 1.0.0 has requirement ipykernel~=4.10, but you'll have ipykernel 6.0.2 which is incompatible. ERROR: google-colab 1.0.0 has requirement requests~=2.23.0, but you'll have requests 2.26.0 which is incompatible. ERROR: datascience 0.10.6 has requirement folium==0.2.1, but you'll have folium 0.8.3 which is incompatible. ERROR: albumentations 0.1.12 has requirement imgaug<0.2.7,>=0.2.5, but you'll have imgaug 0.2.9 which is incompatible. Installing collected packages: matplotlib, pyproj, requests, Rtree, munch, click-plugins, cligj, fiona, geopandas, osmnx Found existing installation: matplotlib 3.2.2 Uninstalling matplotlib-3.2.2: Successfully uninstalled matplotlib-3.2.2 Found existing installation: requests 2.23.0 Uninstalling requests-2.23.0: Successfully uninstalled requests-2.23.0 Successfully installed Rtree-0.9.7 click-plugins-1.1.1 cligj-0.7.2 fiona-1.8.20 geopandas-0.9.0 matplotlib-3.4.2 munch-2.5.0 osmnx-1.1.1 pyproj-3.1.0 requests-2.26.0
import osmnx as ox
%matplotlib inline
G = ox.graph_from_place('Yanahuara, Arequipa, Peru', network_type='drive')
fig, ax = ox.plot_graph(ox.project_graph(G))
import osmnx as ox
%matplotlib inline
G = ox.graph_from_place('Yanahuara, Arequipa, Peru', network_type='walk')
fig, ax = ox.plot_graph(ox.project_graph(G))
G = ox.graph_from_address('350 5th Ave, New York, New York', dist=2000, simplify=True, network_type='drive')
ox.plot_graph(G)
(<Figure size 576x576 with 1 Axes>, <AxesSubplot:>)
G = ox.graph_from_address('Bab Bhar, Tunis, Tunisia')
ox.plot_graph(G)
(<Figure size 576x576 with 1 Axes>, <AxesSubplot:>)
Getting started: https://geoffboeing.com/2017/02/python-getting-started/ For using in Google Colab: https://colab.research.google.com/drive/13OJuSO3BSvo8ACJEdYvBBsp0-A7By6HL#scrollTo=0jrkOFh7FEcT