Skip to content

Instantly share code, notes, and snippets.

@willemarcel
Created September 6, 2024 12:09
Show Gist options
  • Save willemarcel/c1d106868a65b9719e044bf8eb265ded to your computer and use it in GitHub Desktop.
Save willemarcel/c1d106868a65b9719e044bf8eb265ded to your computer and use it in GitHub Desktop.
Nairobi-overture.ipynb
Display the source blob
Display the rendered blob
Raw
{
"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