Created
September 6, 2024 12:09
-
-
Save willemarcel/c1d106868a65b9719e044bf8eb265ded to your computer and use it in GitHub Desktop.
Nairobi-overture.ipynb
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/willemarcel/c1d106868a65b9719e044bf8eb265ded/nairobi-overture.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "veaDENbBoD9i" | |
}, | |
"source": [ | |
"# Overture Maps Buildings" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"pip install overturemaps lonboard palettable" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "af5NWHNvoVPU", | |
"outputId": "647efa42-851a-45bd-b115-e51b319b5432" | |
}, | |
"execution_count": 3, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Collecting overturemaps\n", | |
" Downloading overturemaps-0.9.0-py3-none-any.whl.metadata (3.9 kB)\n", | |
"Collecting lonboard\n", | |
" Downloading lonboard-0.9.3-py3-none-any.whl.metadata (4.7 kB)\n", | |
"Collecting palettable\n", | |
" Downloading palettable-3.3.3-py2.py3-none-any.whl.metadata (3.3 kB)\n", | |
"Requirement already satisfied: click>=8.1.7 in /usr/local/lib/python3.10/dist-packages (from overturemaps) (8.1.7)\n", | |
"Requirement already satisfied: numpy>=1.26.4 in /usr/local/lib/python3.10/dist-packages (from overturemaps) (1.26.4)\n", | |
"Collecting pyarrow>=15.0.2 (from overturemaps)\n", | |
" Downloading pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl.metadata (3.3 kB)\n", | |
"Requirement already satisfied: shapely>=2.0.3 in /usr/local/lib/python3.10/dist-packages (from overturemaps) (2.0.6)\n", | |
"Collecting anywidget<0.10.0,>=0.9.0 (from lonboard)\n", | |
" Downloading anywidget-0.9.13-py3-none-any.whl.metadata (7.2 kB)\n", | |
"Requirement already satisfied: geopandas>=0.13 in /usr/local/lib/python3.10/dist-packages (from lonboard) (0.14.4)\n", | |
"Requirement already satisfied: matplotlib<4.0,>=3.7 in /usr/local/lib/python3.10/dist-packages (from lonboard) (3.7.1)\n", | |
"Requirement already satisfied: pandas<3,>=2 in /usr/local/lib/python3.10/dist-packages (from lonboard) (2.1.4)\n", | |
"Requirement already satisfied: typing-extensions<5.0.0,>=4.6.0 in /usr/local/lib/python3.10/dist-packages (from lonboard) (4.12.2)\n", | |
"Requirement already satisfied: ipywidgets>=7.6.0 in /usr/local/lib/python3.10/dist-packages (from anywidget<0.10.0,>=0.9.0->lonboard) (7.7.1)\n", | |
"Collecting psygnal>=0.8.1 (from anywidget<0.10.0,>=0.9.0->lonboard)\n", | |
" Downloading psygnal-0.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (7.2 kB)\n", | |
"Requirement already satisfied: fiona>=1.8.21 in /usr/local/lib/python3.10/dist-packages (from geopandas>=0.13->lonboard) (1.9.6)\n", | |
"Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from geopandas>=0.13->lonboard) (24.1)\n", | |
"Requirement already satisfied: pyproj>=3.3.0 in /usr/local/lib/python3.10/dist-packages (from geopandas>=0.13->lonboard) (3.6.1)\n", | |
"Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (1.3.0)\n", | |
"Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (0.12.1)\n", | |
"Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (4.53.1)\n", | |
"Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (1.4.5)\n", | |
"Requirement already satisfied: pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (9.4.0)\n", | |
"Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (3.1.4)\n", | |
"Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib<4.0,>=3.7->lonboard) (2.8.2)\n", | |
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3,>=2->lonboard) (2024.1)\n", | |
"Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3,>=2->lonboard) (2024.1)\n", | |
"Requirement already satisfied: attrs>=19.2.0 in /usr/local/lib/python3.10/dist-packages (from fiona>=1.8.21->geopandas>=0.13->lonboard) (24.2.0)\n", | |
"Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from fiona>=1.8.21->geopandas>=0.13->lonboard) (2024.8.30)\n", | |
"Requirement already satisfied: click-plugins>=1.0 in /usr/local/lib/python3.10/dist-packages (from fiona>=1.8.21->geopandas>=0.13->lonboard) (1.1.1)\n", | |
"Requirement already satisfied: cligj>=0.5 in /usr/local/lib/python3.10/dist-packages (from fiona>=1.8.21->geopandas>=0.13->lonboard) (0.7.2)\n", | |
"Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from fiona>=1.8.21->geopandas>=0.13->lonboard) (1.16.0)\n", | |
"Requirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (5.5.6)\n", | |
"Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.2.0)\n", | |
"Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (5.7.1)\n", | |
"Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.6.8)\n", | |
"Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (7.34.0)\n", | |
"Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.0.13)\n", | |
"Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel>=4.5.1->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (6.1.12)\n", | |
"Requirement already satisfied: tornado>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipykernel>=4.5.1->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (6.3.3)\n", | |
"Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (71.0.4)\n", | |
"Collecting jedi>=0.16 (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard)\n", | |
" Using cached jedi-0.19.1-py2.py3-none-any.whl.metadata (22 kB)\n", | |
"Requirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.4.2)\n", | |
"Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.7.5)\n", | |
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.0.47)\n", | |
"Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2.16.1)\n", | |
"Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.2.0)\n", | |
"Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.1.7)\n", | |
"Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.9.0)\n", | |
"Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.10/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (6.5.5)\n", | |
"Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.8.4)\n", | |
"Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.1.4)\n", | |
"Requirement already satisfied: pyzmq<25,>=17 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (24.0.1)\n", | |
"Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (23.1.0)\n", | |
"Requirement already satisfied: jupyter-core>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (5.7.2)\n", | |
"Requirement already satisfied: nbformat in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (5.10.4)\n", | |
"Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (6.5.4)\n", | |
"Requirement already satisfied: nest-asyncio>=1.5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.6.0)\n", | |
"Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.8.3)\n", | |
"Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.18.1)\n", | |
"Requirement already satisfied: prometheus-client in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.20.0)\n", | |
"Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.1.0)\n", | |
"Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.7.0)\n", | |
"Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.2.13)\n", | |
"Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core>=4.6.1->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.2.2)\n", | |
"Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.2.4)\n", | |
"Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.9.4)\n", | |
"Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.12.3)\n", | |
"Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (6.1.0)\n", | |
"Requirement already satisfied: defusedxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.7.1)\n", | |
"Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.4)\n", | |
"Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.3.0)\n", | |
"Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2.1.5)\n", | |
"Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.8.4)\n", | |
"Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.10.0)\n", | |
"Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.5.1)\n", | |
"Requirement already satisfied: tinycss2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.3.0)\n", | |
"Requirement already satisfied: fastjsonschema>=2.15 in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2.20.0)\n", | |
"Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (4.23.0)\n", | |
"Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.10/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (21.2.0)\n", | |
"Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2023.12.1)\n", | |
"Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.35.1)\n", | |
"Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.20.0)\n", | |
"Requirement already satisfied: jupyter-server<3,>=1.8 in /usr/local/lib/python3.10/dist-packages (from notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.24.0)\n", | |
"Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.17.0)\n", | |
"Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2.6)\n", | |
"Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (0.5.1)\n", | |
"Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (2.22)\n", | |
"Requirement already satisfied: anyio<4,>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.7.1)\n", | |
"Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.8.0)\n", | |
"Requirement already satisfied: idna>=2.8 in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (3.8)\n", | |
"Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.3.1)\n", | |
"Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server<3,>=1.8->notebook-shim>=0.2.3->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets>=7.6.0->anywidget<0.10.0,>=0.9.0->lonboard) (1.2.2)\n", | |
"Downloading overturemaps-0.9.0-py3-none-any.whl (9.9 kB)\n", | |
"Downloading lonboard-0.9.3-py3-none-any.whl (675 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m675.4/675.4 kB\u001b[0m \u001b[31m3.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading palettable-3.3.3-py2.py3-none-any.whl (332 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m332.3/332.3 kB\u001b[0m \u001b[31m25.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading anywidget-0.9.13-py3-none-any.whl (213 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m213.7/213.7 kB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl (39.9 MB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m39.9/39.9 MB\u001b[0m \u001b[31m17.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hDownloading psygnal-0.11.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (727 kB)\n", | |
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m727.4/727.4 kB\u001b[0m \u001b[31m45.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", | |
"\u001b[?25hUsing cached jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)\n", | |
"Installing collected packages: pyarrow, psygnal, palettable, jedi, overturemaps, anywidget, lonboard\n", | |
" Attempting uninstall: pyarrow\n", | |
" Found existing installation: pyarrow 14.0.2\n", | |
" Uninstalling pyarrow-14.0.2:\n", | |
" Successfully uninstalled pyarrow-14.0.2\n", | |
"\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", | |
"cudf-cu12 24.4.1 requires pyarrow<15.0.0a0,>=14.0.1, but you have pyarrow 17.0.0 which is incompatible.\n", | |
"ibis-framework 8.0.0 requires pyarrow<16,>=2, but you have pyarrow 17.0.0 which is incompatible.\u001b[0m\u001b[31m\n", | |
"\u001b[0mSuccessfully installed anywidget-0.9.13 jedi-0.19.1 lonboard-0.9.3 overturemaps-0.9.0 palettable-3.3.3 psygnal-0.11.1 pyarrow-17.0.0\n" | |
] | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "CsF37s6ooD9k" | |
}, | |
"source": [ | |
"## Imports\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:06.290822Z", | |
"iopub.status.busy": "2024-04-22T19:15:06.290247Z", | |
"iopub.status.idle": "2024-04-22T19:15:06.902020Z", | |
"shell.execute_reply": "2024-04-22T19:15:06.901760Z" | |
}, | |
"id": "O7xj9hjjoD9k" | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"import overturemaps\n", | |
"import pyarrow.compute as pc\n", | |
"from matplotlib.colors import LogNorm\n", | |
"from palettable.colorbrewer.sequential import Oranges_9\n", | |
"\n", | |
"from lonboard import Map, PolygonLayer, PathLayer\n", | |
"from lonboard.colormap import apply_continuous_cmap" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:06.903772Z", | |
"iopub.status.busy": "2024-04-22T19:15:06.903639Z", | |
"iopub.status.idle": "2024-04-22T19:15:06.905134Z", | |
"shell.execute_reply": "2024-04-22T19:15:06.904922Z" | |
}, | |
"id": "NGjN-VmCoD9l" | |
}, | |
"outputs": [], | |
"source": [ | |
"bbox = 36.754,-1.34,36.893,-1.248" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:06.906431Z", | |
"iopub.status.busy": "2024-04-22T19:15:06.906339Z", | |
"iopub.status.idle": "2024-04-22T19:15:35.933458Z", | |
"shell.execute_reply": "2024-04-22T19:15:35.932609Z" | |
}, | |
"id": "7OUcR4l8oD9m" | |
}, | |
"outputs": [], | |
"source": [ | |
"table = overturemaps.record_batch_reader(\"building\", bbox).read_all()\n", | |
"\n", | |
"# Temporarily required as of Lonboard 0.8 to avoid a Lonboard bug\n", | |
"table = table.combine_chunks()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:35.941147Z", | |
"iopub.status.busy": "2024-04-22T19:15:35.940869Z", | |
"iopub.status.idle": "2024-04-22T19:15:35.948527Z", | |
"shell.execute_reply": "2024-04-22T19:15:35.948095Z" | |
}, | |
"id": "fxxp3LzxoD9n" | |
}, | |
"outputs": [], | |
"source": [ | |
"heights = table[\"height\"].to_numpy()\n", | |
"heights = np.nan_to_num(heights, nan=1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:35.950232Z", | |
"iopub.status.busy": "2024-04-22T19:15:35.950096Z", | |
"iopub.status.idle": "2024-04-22T19:15:35.958561Z", | |
"shell.execute_reply": "2024-04-22T19:15:35.958274Z" | |
}, | |
"id": "Gl163HOyoD9n" | |
}, | |
"outputs": [], | |
"source": [ | |
"normalizer = LogNorm(1, heights.max(), clip=True)\n", | |
"normalized_heights = normalizer(heights)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:35.960487Z", | |
"iopub.status.busy": "2024-04-22T19:15:35.960402Z", | |
"iopub.status.idle": "2024-04-22T19:15:35.974837Z", | |
"shell.execute_reply": "2024-04-22T19:15:35.974616Z" | |
}, | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 123 | |
}, | |
"id": "bHPhCFMCoD9o", | |
"outputId": "38aeec9b-7f50-439c-ca58-7802cf4be405" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<matplotlib.colors.LinearSegmentedColormap at 0x7f6acc6b3310>" | |
], | |
"text/html": [ | |
"<div style=\"vertical-align: middle;\"><strong>Oranges</strong> </div><div class=\"cmap\"><img alt=\"Oranges colormap\" title=\"Oranges\" style=\"border: 1px solid #555;\" src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQBPcmFuZ2VzIGNvbG9ybWFwAJwLXwAAABx0RVh0RGVzY3JpcHRpb24AT3JhbmdlcyBjb2xvcm1hcKeyuiYAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZyqv+E0AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNy4xLCBodHRwczovL21hdHBsb3RsaWIub3JnBAlnagAAAddJREFUeJzt1sFO4zAUQFF3/v9PWc82ZgEUkdZNGKhmcc/ZVHbSF6dSpXuZf1/mGGPMOceb989fW49z9z9r7sF6+d5z2+1vi3kn92/m/e/n7L+/mHP6+mJ/e9LcHz/3aP/g933Wennu55xrLuZe97eP/8n9c8zF/Ll7n9vnHMzdFvPOnn/73jk//1b39z+/Px5f3/bX/3HOYv/2nPefdzz//bhfl2P3s328zvq+3fr0fdfXuJy87/F6de7j97h8We9+nuW8716/Pu+35vzw+hxv7/1nAAA5AgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABA0Cu5rt04cCG7bAAAAABJRU5ErkJggg==\"></div><div style=\"vertical-align: middle; max-width: 514px; display: flex; justify-content: space-between;\"><div style=\"float: left;\"><div title=\"#fff5ebff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #fff5ebff;\"></div> under</div><div style=\"margin: 0 auto; display: inline-block;\">bad <div title=\"#00000000\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #00000000;\"></div></div><div style=\"float: right;\">over <div title=\"#7f2704ff\" style=\"display: inline-block; width: 1em; height: 1em; margin: 0; vertical-align: middle; border: 1px solid #555; background-color: #7f2704ff;\"></div></div>" | |
], | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAABACAYAAABsv8+/AAAAFnRFWHRUaXRsZQBPcmFuZ2VzIGNvbG9ybWFwAJwLXwAAABx0RVh0RGVzY3JpcHRpb24AT3JhbmdlcyBjb2xvcm1hcKeyuiYAAAAwdEVYdEF1dGhvcgBNYXRwbG90bGliIHYzLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZyqv+E0AAAAydEVYdFNvZnR3YXJlAE1hdHBsb3RsaWIgdjMuNy4xLCBodHRwczovL21hdHBsb3RsaWIub3JnBAlnagAAAddJREFUeJzt1sFO4zAUQFF3/v9PWc82ZgEUkdZNGKhmcc/ZVHbSF6dSpXuZf1/mGGPMOceb989fW49z9z9r7sF6+d5z2+1vi3kn92/m/e/n7L+/mHP6+mJ/e9LcHz/3aP/g933Wennu55xrLuZe97eP/8n9c8zF/Ll7n9vnHMzdFvPOnn/73jk//1b39z+/Px5f3/bX/3HOYv/2nPefdzz//bhfl2P3s328zvq+3fr0fdfXuJy87/F6de7j97h8We9+nuW8716/Pu+35vzw+hxv7/1nAAA5AgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABAkAAAgCABAABBAgAAggQAAAQJAAAIEgAAECQAACBIAABA0Cu5rt04cCG7bAAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {}, | |
"execution_count": 19 | |
} | |
], | |
"source": [ | |
"Oranges_9.mpl_colormap" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:35.994879Z", | |
"iopub.status.busy": "2024-04-22T19:15:35.994760Z", | |
"iopub.status.idle": "2024-04-22T19:15:35.998124Z", | |
"shell.execute_reply": "2024-04-22T19:15:35.997879Z" | |
}, | |
"id": "iG8zujbRoD9o" | |
}, | |
"outputs": [], | |
"source": [ | |
"colors = apply_continuous_cmap(normalized_heights, Oranges_9)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:35.999473Z", | |
"iopub.status.busy": "2024-04-22T19:15:35.999388Z", | |
"iopub.status.idle": "2024-04-22T19:15:36.717272Z", | |
"shell.execute_reply": "2024-04-22T19:15:36.716858Z" | |
}, | |
"id": "ChSBcJLsoD9o" | |
}, | |
"outputs": [], | |
"source": [ | |
"buildings_layer = PolygonLayer(\n", | |
" # Select only a few attribute columns from the table\n", | |
" table=table.select([\"id\", \"height\", \"geometry\", \"names\", \"sources\"]),\n", | |
" extruded=True,\n", | |
" get_elevation=heights,\n", | |
" get_fill_color=colors,\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"road_table = overturemaps.record_batch_reader(\"segment\", bbox).read_all()\n", | |
"\n", | |
"# Temporarily required as of Lonboard 0.8 to avoid a Lonboard bug\n", | |
"road_table = road_table.combine_chunks()\n", | |
"expr = pc.field(\"subtype\") == \"road\"\n", | |
"road_table = road_table.filter(expr)" | |
], | |
"metadata": { | |
"id": "gDA406d7tEuF" | |
}, | |
"execution_count": 48, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"road_layer = PathLayer(\n", | |
" table=road_table.select([\"id\", \"geometry\", \"subtype\", \"class\", \"sources\"]),\n", | |
" get_color=[0, 128, 128],\n", | |
" width_min_pixels=2,\n", | |
")" | |
], | |
"metadata": { | |
"id": "QsB7So99s-_j" | |
}, | |
"execution_count": 55, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 61, | |
"metadata": { | |
"execution": { | |
"iopub.execute_input": "2024-04-22T19:15:36.753502Z", | |
"iopub.status.busy": "2024-04-22T19:15:36.753382Z", | |
"iopub.status.idle": "2024-04-22T19:15:36.781959Z", | |
"shell.execute_reply": "2024-04-22T19:15:36.781671Z" | |
}, | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 517, | |
"referenced_widgets": [ | |
"ce4b2578c4b046fe84e601a3711a3439", | |
"dafcc1d4f79f49a19fa217660f08110b", | |
"1e9061f29d2444a6993534cf9542fb48", | |
"a4f5030ab5874bc4aa2b88331fd68ef1" | |
] | |
}, | |
"id": "jMywCGW9oD9p", | |
"outputId": "d0e78be0-611c-46c6-cdab-cd5095f5f7ff" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"Map(layers=[PolygonLayer(extruded=True, get_elevation=<pyarrow.lib.FloatArray object at 0x7f6ababec880>\n", | |
"[\n", | |
" 1,…" | |
], | |
"application/vnd.jupyter.widget-view+json": { | |
"version_major": 2, | |
"version_minor": 0, | |
"model_id": "ce4b2578c4b046fe84e601a3711a3439" | |
} | |
}, | |
"metadata": { | |
"application/vnd.jupyter.widget-view+json": { | |
"colab": { | |
"custom_widget_manager": { | |
"url": "https://ssl.gstatic.com/colaboratory-static/widgets/colab-cdn-widget-manager/2b70e893a8ba7c0f/manager.min.js" | |
} | |
} | |
} | |
} | |
} | |
], | |
"source": [ | |
"view_state = {\n", | |
" \"longitude\": 36.825,\n", | |
" \"latitude\": -1.313,\n", | |
" \"zoom\": 13,\n", | |
" \"pitch\": 59,\n", | |
" \"bearing\": 13,\n", | |
"}\n", | |
"m = Map([buildings_layer, road_layer], view_state=view_state)\n", | |
"m" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "NyEmmDUXoD9p" | |
}, | |
"outputs": [], | |
"source": [] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.11.4" | |
}, | |
"widgets": { | |
"application/vnd.jupyter.widget-state+json": { | |
"ce4b2578c4b046fe84e601a3711a3439": { | |
"model_module": "anywidget", | |
"model_name": "AnyModel", | |
"model_module_version": "~0.9.*", | |
"state": { | |
"_anywidget_id": "lonboard._map.Map", | |
"_css": ".lonboard-tooltip{font-family:var(--jp-ui-font-family);font-size:var(--jp-ui-font-size1)}.lonboard-tooltip table{border-collapse:collapse}.lonboard-tooltip table tr:nth-child(odd){background-color:#fff}.lonboard-tooltip table tr:nth-child(2n){background-color:#f1f1f1}.lonboard-tooltip td{border:1px solid rgb(204,204,204);padding:5px}.lonboard-tooltip td:first-child{font-weight:450}\n", | |
"_dom_classes": [], |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment