{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Generate enclosed tessellation\n", "\n", "This notebook generates enclosed tessellation for the whole Great Britain within [enclosures](Generate_enclosures).\n", "\n", "Note: An algorithm to generate enclosed tessellation has been implemented in momepy 0.4.0 within [`momepy.Tessellation`](http://docs.momepy.org/en/latest/generated/momepy.Tessellation.html#momepy.Tessellation)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Start dask\n", "\n", "Enclosed tessellation is a `dask`-based parallelised algorithm, so let’s start a client first." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "
\n", "

Client

\n", "\n", "
\n", "

Cluster

\n", "
    \n", "
  • Workers: 7
  • \n", "
  • Cores: 28
  • \n", "
  • Memory: 84.28 GB
  • \n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from dask.distributed import Client\n", "\n", "client = Client()\n", "client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Function for `enclosed_tessellation` is loaded from `tessellation.py` in the same directory. In the future, it will be part of `momepy`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import time\n", "\n", "import numpy as np\n", "import geopandas as gpd\n", "from tqdm.notebook import tqdm\n", "\n", "from tessellation import enclosed_tessellation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function loads [pre-chunked](chunk_uk) parquet files of buildings and enclosures, generates enclosed tessellation as saves it to another parquet file. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c670237a757d4cb6a418bfb213a2148f", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, max=103.0), HTML(value='')))" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.7/site-packages/ipykernel_launcher.py:5: UserWarning: this is an initial implementation of Parquet/Feather file support and associated metadata. This is tracking version 0.1.0 of the metadata specification at https://github.com/geopandas/geo-arrow-spec\n", "\n", "This metadata specification does not yet make stability promises. We do not yet recommend using this in a production setting unless you are able to rewrite your Parquet/Feather files.\n", "\n", "To further ignore this warning, you can do: \n", "import warnings; warnings.filterwarnings('ignore', message='.*initial implementation of Parquet.*')\n", " \"\"\"\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n", "distributed.nanny - WARNING - Restarting worker\n" ] } ], "source": [ "%%time\n", "for chunk_id in tqdm(range(103), total=103):\n", " blg = gpd.read_parquet(f'../../urbangrammar_samba/spatial_signatures/buildings/blg_{chunk_id}.pq')\n", " enclosures = gpd.read_parquet(f'../../urbangrammar_samba/spatial_signatures/enclosures/encl_{chunk_id}.pq')\n", " tess = enclosed_tessellation(buildings=blg, enclosures=enclosures.geometry.values, unique_id=\"uID\", enclosure_id=\"enclosureID\")\n", " tess['enclosureID'] = np.take(enclosures.enclosureID, tess.enclosureID).values\n", " tess.to_parquet(f'../../urbangrammar_samba/spatial_signatures/tessellation/tess_{chunk_id}.pq')\n", " client.restart()\n", " time.sleep(5)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "client.close()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.7.8" } }, "nbformat": 4, "nbformat_minor": 4 }