diff --git a/README.html b/README.html index 1d2477c..513ffe1 100644 --- a/README.html +++ b/README.html @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

diff --git a/_sources/book/00_MinIO_Object_Store.ipynb b/_sources/book/00_MinIO_Object_Store.ipynb index 4fe016b..7a3aad9 100644 --- a/_sources/book/00_MinIO_Object_Store.ipynb +++ b/_sources/book/00_MinIO_Object_Store.ipynb @@ -29,7 +29,7 @@ "id": "8a8d65c2-8638-4385-a40d-0dfa190d4601", "metadata": {}, "source": [ - "# Connect to MinIO via DuckDB" + "## Connect to MinIO via DuckDB" ] }, { diff --git a/_sources/book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb b/_sources/book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb index de9c90e..cdfd2ec 100644 --- a/_sources/book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb +++ b/_sources/book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb @@ -3,19 +3,19 @@ { "cell_type": "markdown", "id": "7ee2c20c-e467-4499-84c5-0d583cee77b6", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, + "metadata": {}, "source": [ - "# DuckDB + PyIceberg: Data Extraction from *geo-sorted ohsome contributions* \n", + "# Download latest OSM data as GeoPackage\n", "\n", - ":::{note}\n", - "1. Set the connection params and configure DuckDB.\n", - "2. Download the data in 3 steps:\n", - " * Download data with PyIceberg.\n", - " * Fitler and process data with DuckDB.\n", - " * Export results into geopackage file with GeoPandas.\n", - ":::" + "In this notebook we demonstrate how you can download the latest OSM data in GeoPackage format.\n", + "\n", + "These are the steps you see further down:\n", + "\n", + "* Set the connection parameters.\n", + "* Prepare your input parameters, e.g. define area of interest and OSM tag filter.\n", + "* **Download data** using PyIceberg and DuckDB.\n", + "* Filter and process data with DuckDB.\n", + "* Export results into geopackage file with GeoPandas. " ] }, { @@ -23,13 +23,13 @@ "id": "b6ec70ad-bce1-4052-b151-23fe47fad942", "metadata": {}, "source": [ - "# Getting started\n", + "## Getting started\n", "Set connection params." ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "id": "554c5bc9-8962-44ed-96f8-fd34b3efe564", "metadata": {}, "outputs": [], @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 2, "id": "f2e24802-8629-4648-afe5-d4c5f21403df", "metadata": {}, "outputs": [], @@ -61,7 +61,6 @@ " config={\n", " 'threads': 8,\n", " 'max_memory': '8GB',\n", - " # 'enable_object_cache': True\n", " }\n", ")\n", "con.install_extension(\"spatial\")\n", @@ -88,7 +87,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "825cd3dc-18d1-48fb-ad47-2945bb3a8c53", "metadata": {}, "outputs": [], @@ -113,7 +112,7 @@ "id": "bed363ef-ee28-411e-9d56-501c1005beac", "metadata": {}, "source": [ - "# Download data with PyIceberg table scan\n", + "## Download data with PyIceberg table scan\n", "In this step we can already filter all OSM contributions by four major factors. We will perform more detailed filtering (e.g. for OSM tags values) later:\n", "* **status** (e.g. latest, historic or deleted OSM features)\n", "* **location** (using the bounding box coordinates of each OSM feature)\n", @@ -123,7 +122,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "id": "872da17b-f490-4a1a-8aec-09ad847db0ea", "metadata": {}, "outputs": [], @@ -146,8 +145,6 @@ "\n", "selected_region = 'nairobi'\n", "xmin, ymin, xmax, ymax = bboxes[selected_region]\n", - "area_of_interest_file =f\"../data/{selected_region}.geojson\"\n", - "area_of_interest_file = f\"https://raw.githubusercontent.com/GIScience/sotm-2024-ohsome-data-insights-workshop/main/data/{selected_region}.geojson\"\n", "\n", "# Define geometry type filter\n", "geometry_type = 'Polygon'\n", @@ -188,7 +185,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "id": "5ab182ee-d069-46cb-a88d-e1a76f7ab1f6", "metadata": {}, "outputs": [ @@ -196,7 +193,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "download took 198.388 sec.\n" + "download took 15.965 sec.\n" ] } ], @@ -230,7 +227,7 @@ "id": "f7965fc4-e82d-4972-8d5c-760fe45d3614", "metadata": {}, "source": [ - "# Filter and process data with DuckDB\n", + "## Filter and process data with DuckDB\n", "Second, we use DuckDB to perform the more detailed filtering. In this step we can filter for:\n", "* **tags**\n", "* **location** (using the exact geometry of each OSM contribution)" @@ -238,19 +235,15 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "id": "d2125907-3028-4e76-ae26-39ac7adf0f94", "metadata": {}, "outputs": [ { - "ename": "IOException", - "evalue": "IO Error: GDAL Error (4): Failed to open file https://raw.githubusercontent.com/GIScience/sotm-2024-ohsome-data-insights-workshop/main/data/nairobi.geojson: {\"exception_type\":\"IO\",\"exception_message\":\"Cannot open file \\\"https://raw.githubusercontent.com/GIScience/sotm-2024-ohsome-data-insights-workshop/main/data/nairobi.geojson\\\": No such file or directory\",\"errno\":\"2\"}", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIOException\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[9], line 20\u001b[0m\n\u001b[1;32m 2\u001b[0m start_time \u001b[38;5;241m=\u001b[39m time\u001b[38;5;241m.\u001b[39mtime()\n\u001b[1;32m 4\u001b[0m query \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;124mDROP TABLE IF EXISTS osm_data;\u001b[39m\n\u001b[1;32m 6\u001b[0m \u001b[38;5;124mCREATE TABLE osm_data AS\u001b[39m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;124m;\u001b[39m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;124m\"\"\"\u001b[39m\n\u001b[0;32m---> 20\u001b[0m \u001b[43mcon\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msql\u001b[49m\u001b[43m(\u001b[49m\u001b[43mquery\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 22\u001b[0m processing_time \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mround\u001b[39m(time\u001b[38;5;241m.\u001b[39mtime() \u001b[38;5;241m-\u001b[39m start_time, \u001b[38;5;241m3\u001b[39m)\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mprocessing took \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mprocessing_time\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m sec.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "\u001b[0;31mIOException\u001b[0m: IO Error: GDAL Error (4): Failed to open file https://raw.githubusercontent.com/GIScience/sotm-2024-ohsome-data-insights-workshop/main/data/nairobi.geojson: {\"exception_type\":\"IO\",\"exception_message\":\"Cannot open file \\\"https://raw.githubusercontent.com/GIScience/sotm-2024-ohsome-data-insights-workshop/main/data/nairobi.geojson\\\": No such file or directory\",\"errno\":\"2\"}" + "name": "stdout", + "output_type": "stream", + "text": [ + "processing took 0.552 sec.\n" ] } ], @@ -265,12 +258,9 @@ "SELECT a.* \n", "FROM\n", " raw_osm_data as a,\n", - " st_read('{area_of_interest_file}') as aoi\n", "WHERE 1=1\n", " and tags['building'][1] is not null\n", " and tags['building'][1] != 'no'\n", - " -- spatial filtering part\n", - " and ST_Intersects(st_GeomFromText(a.geometry), aoi.geom)\n", ")\n", ";\n", "\"\"\"\n", @@ -285,7 +275,7 @@ "id": "73b8b5e7-41b7-4c3f-a901-3c5403dc4150", "metadata": {}, "source": [ - "# Save data as GeoPackage" + "## Save data as GeoPackage" ] }, { @@ -298,28 +288,27 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 12, "id": "d738f1c2-cbaf-49ce-9350-e6b28e2414b3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "┌─────────────┬────────────────────────────────────────────────────────────┬─────────┬─────────┬─────────┬─────────┐\n", - "│ column_name │ column_type │ null │ key │ default │ extra │\n", - "│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │\n", - "├─────────────┼────────────────────────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┤\n", - "│ user_id │ INTEGER │ YES │ NULL │ NULL │ NULL │\n", - "│ valid_from │ TIMESTAMP │ YES │ NULL │ NULL │ NULL │\n", - "│ osm_id │ VARCHAR │ YES │ NULL │ NULL │ NULL │\n", - "│ osm_version │ INTEGER │ YES │ NULL │ NULL │ NULL │\n", - "│ tags │ MAP(VARCHAR, VARCHAR) │ YES │ NULL │ NULL │ NULL │\n", - "│ bbox │ STRUCT(xmin DOUBLE, ymin DOUBLE, xmax DOUBLE, ymax DOUBLE) │ YES │ NULL │ NULL │ NULL │\n", - "│ geometry │ VARCHAR │ YES │ NULL │ NULL │ NULL │\n", - "└─────────────┴────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┘" + "┌─────────────┬───────────────────────┬─────────┬─────────┬─────────┬─────────┐\n", + "│ column_name │ column_type │ null │ key │ default │ extra │\n", + "│ varchar │ varchar │ varchar │ varchar │ varchar │ varchar │\n", + "├─────────────┼───────────────────────┼─────────┼─────────┼─────────┼─────────┤\n", + "│ user_id │ INTEGER │ YES │ NULL │ NULL │ NULL │\n", + "│ valid_from │ TIMESTAMP │ YES │ NULL │ NULL │ NULL │\n", + "│ osm_id │ VARCHAR │ YES │ NULL │ NULL │ NULL │\n", + "│ osm_version │ INTEGER │ YES │ NULL │ NULL │ NULL │\n", + "│ tags │ MAP(VARCHAR, VARCHAR) │ YES │ NULL │ NULL │ NULL │\n", + "│ geometry │ VARCHAR │ YES │ NULL │ NULL │ NULL │\n", + "└─────────────┴───────────────────────┴─────────┴─────────┴─────────┴─────────┘" ] }, - "execution_count": 22, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -342,22 +331,26 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 13, "id": "7fc355bf-cf38-487d-9b80-5cc02b9edc31", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "┌─────────┬────────────┬─────────┬─────────────┬──────────────────────┬─────────────────────────────────────┬──────────┐\n", - "│ user_id │ valid_from │ osm_id │ osm_version │ tags │ bbox │ geometry │\n", - "│ int32 │ timestamp │ varchar │ int32 │ map(varchar, varch… │ struct(xmin double, ymin double, … │ varchar │\n", - "├─────────┴────────────┴─────────┴─────────────┴──────────────────────┴─────────────────────────────────────┴──────────┤\n", - "│ 0 rows │\n", - "└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘" + "┌──────────┬─────────────────────┬────────────────┬─────────────┬──────────────────────┬───────────────────────────────┐\n", + "│ user_id │ valid_from │ osm_id │ osm_version │ tags │ geometry │\n", + "│ int32 │ timestamp │ varchar │ int32 │ map(varchar, varch… │ varchar │\n", + "├──────────┼─────────────────────┼────────────────┼─────────────┼──────────────────────┼───────────────────────────────┤\n", + "│ 1122708 │ 2021-09-07 23:04:37 │ way/500108893 │ 5 │ {building=yes, rai… │ POLYGON ((36.89974139999999… │\n", + "│ 13366421 │ 2023-01-10 06:13:29 │ way/1130552834 │ 1 │ {building=yes, add… │ POLYGON ((36.8719435 -1.241… │\n", + "│ 18306654 │ 2023-11-11 01:58:08 │ way/88406439 │ 16 │ {building=yes, aer… │ POLYGON ((36.9238579 -1.331… │\n", + "│ 17770290 │ 2022-11-27 17:57:39 │ way/1117632750 │ 1 │ {building=yes} │ POLYGON ((36.6824404 -1.442… │\n", + "│ 3733993 │ 2023-04-11 09:02:45 │ way/1161291128 │ 1 │ {building=yes} │ POLYGON ((36.6824528 -1.438… │\n", + "└──────────┴─────────────────────┴────────────────┴─────────────┴──────────────────────┴───────────────────────────────┘" ] }, - "execution_count": 23, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } @@ -381,7 +374,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 14, "id": "d070a68f-1615-4e5f-94ea-3cd837f2be4b", "metadata": {}, "outputs": [ @@ -392,11 +385,11 @@ "│ count_star() │\n", "│ int64 │\n", "├──────────────┤\n", - "│ 0 │\n", + "│ 527170 │\n", "└──────────────┘" ] }, - "execution_count": 26, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -419,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 16, "id": "3648c939-7813-4be3-b1d0-b51d3fbad4de", "metadata": {}, "outputs": [ @@ -427,7 +420,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "processing took 0.109 sec.\n" + "processing took 16.175 sec.\n" ] } ], @@ -436,12 +429,7 @@ "\n", "start_time = time.time()\n", "query = f\"\"\"\n", - " SELECT osm_data.*\n", - " FROM\n", - " osm_data,\n", - " st_read('{area_of_interest_file}') as aoi\n", - " WHERE 1=1\n", - " and ST_Intersects(st_GeomFromText(osm_data.geometry), aoi.geom)\n", + " SELECT * FROM osm_data\n", "\"\"\"\n", "df = con.sql(query).df()\n", "\n", @@ -461,7 +449,7 @@ "id": "50bf5649-9176-4e7f-83ac-752fc9e6faae", "metadata": {}, "source": [ - "# Work with the data in QGIS\n", + "## Work with the data in QGIS\n", "Add your geopackage file in QGIS, e.g. via drag-and-drop or through file manager." ] }, diff --git a/_sources/book/01b_Data_Extraction_DuckDB_only.ipynb b/_sources/book/01b_Data_Extraction_DuckDB_only.ipynb index 8fbe783..cfa3d8f 100644 --- a/_sources/book/01b_Data_Extraction_DuckDB_only.ipynb +++ b/_sources/book/01b_Data_Extraction_DuckDB_only.ipynb @@ -22,7 +22,7 @@ "id": "b6ec70ad-bce1-4052-b151-23fe47fad942", "metadata": {}, "source": [ - "# Getting started\n", + "## Getting started\n", "Set connection params." ] }, @@ -116,7 +116,7 @@ "id": "bed363ef-ee28-411e-9d56-501c1005beac", "metadata": {}, "source": [ - "# Download with DuckDB\n", + "## Download with DuckDB\n", "In this step we can already filter all OSM contributions by four major factors. We will perform more detailed filtering (e.g. for OSM tags values) later:\n", "* **status** (e.g. latest, historic or deleted OSM features)\n", "* **location** (using the bounding box coordinates of each OSM feature)\n", @@ -257,7 +257,7 @@ "id": "73b8b5e7-41b7-4c3f-a901-3c5403dc4150", "metadata": {}, "source": [ - "# Save data as GeoPackage" + "## Save data as GeoPackage" ] }, { @@ -436,7 +436,7 @@ "id": "50bf5649-9176-4e7f-83ac-752fc9e6faae", "metadata": {}, "source": [ - "# Work with the data in QGIS\n", + "## Work with the data in QGIS\n", "Add your geopackage file in QGIS, e.g. via drag-and-drop or through file manager." ] }, diff --git a/_sources/book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb b/_sources/book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb index c245042..adc95c5 100644 --- a/_sources/book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb +++ b/_sources/book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb @@ -5,7 +5,7 @@ "id": "376bf8342197f6a6", "metadata": {}, "source": [ - "# DuckDB + PyIceberg: Currentness of Buildings\n", + "# Currentness of Buildings\n", "In this notebook we demonstrate how to analyze and visualize the up-to-date-ness or currentness of the latest OSM data.\n", "\n", "These are the steps you see further down:\n", @@ -22,7 +22,7 @@ "id": "23f48837-22c6-4c12-ab34-a99881cd844b", "metadata": {}, "source": [ - "# Getting started\n", + "## Getting started\n", "Set connection params." ] }, @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 10, "id": "f79d24f5f976b9e3", "metadata": { "ExecuteTime": { @@ -135,7 +135,6 @@ "\n", "selected_region = 'heidelberg'\n", "xmin, ymin, xmax, ymax = bboxes[selected_region]\n", - "area_of_interest_file =f\"../data/{selected_region}.geojson\"\n", "\n", "# Define geometry type filter\n", "geometry_type = 'Polygon'" @@ -157,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 7, "id": "30a0e2f1-4efc-46b4-a0c8-89ced449a456", "metadata": {}, "outputs": [ @@ -165,7 +164,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "download took 30.733 sec.\n" + "download took 5.492 sec.\n" ] } ], @@ -177,18 +176,15 @@ " row_filter=(\n", " f\"status = '{status}' \"\n", " f\"and geometry_type = '{geometry_type}' \"\n", - " # ToDO: add bbox query here once available in iceberg table\n", - " #f\"and (bbox.xmax >= {xmin} and bbox.xmin <= {xmax}) \"\n", - " #f\"and (bbox.ymax >= {ymin} and bbox.ymin <= {ymax}) \"\n", + " f\"and (bbox.xmax >= {xmin} and bbox.xmin <= {xmax}) \"\n", + " f\"and (bbox.ymax >= {ymin} and bbox.ymin <= {ymax}) \"\n", " ),\n", " selected_fields=(\n", " \"valid_from\",\n", " \"tags\",\n", " \"geometry\",\n", " \"bbox\"\n", - " ),\n", - " # ToDO: add bbox query here once available in iceberg table\n", - " limit=1_000_000\n", + " )\n", ").to_duckdb('raw_osm_data',connection=con)\n", "\n", "download_time = round(time.time() - start_time, 3)\n", @@ -207,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 11, "id": "4c0e802d-013b-43ac-87fa-5b22059f93fa", "metadata": {}, "outputs": [ @@ -215,7 +211,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "processing took 0.025 sec.\n" + "processing took 0.229 sec.\n" ] } ], @@ -233,14 +229,9 @@ " a.geometry \n", "FROM\n", " raw_osm_data as a,\n", - " st_read('{area_of_interest_file}') as aoi\n", "WHERE 1=1\n", " and tags['building'][1] is not null\n", " and tags['building'][1] != 'no'\n", - " -- spatial filtering part\n", - " and (a.bbox.xmax >= {xmin} AND a.bbox.xmin <= {xmax})\n", - " and (a.bbox.ymax >= {ymin} AND a.bbox.ymin <= {ymax})\n", - " and ST_Intersects(st_GeomFromText(a.geometry), aoi.geom)\n", ")\n", ";\n", "\"\"\"\n", @@ -255,69 +246,105 @@ "id": "68ed309a-2e60-4ad5-aa00-c2edcd858cf5", "metadata": {}, "source": [ - "\n", "## Plot currentness chart with polars and hvplot" ] }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 12, "id": "07f16b43-3cda-4a76-a99d-1ce96633ca66", "metadata": {}, "outputs": [ { - "ename": "IndexError", - "evalue": "index 0 is out of bounds for axis 0 with size 0", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/IPython/core/formatters.py:977\u001b[0m, in \u001b[0;36mMimeBundleFormatter.__call__\u001b[0;34m(self, obj, include, exclude)\u001b[0m\n\u001b[1;32m 974\u001b[0m method \u001b[38;5;241m=\u001b[39m get_real_method(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_method)\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 977\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43minclude\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minclude\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexclude\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexclude\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 978\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 979\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/dimension.py:1275\u001b[0m, in \u001b[0;36mDimensioned._repr_mimebundle_\u001b[0;34m(self, include, exclude)\u001b[0m\n\u001b[1;32m 1268\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_repr_mimebundle_\u001b[39m(\u001b[38;5;28mself\u001b[39m, include\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, exclude\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 1269\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1270\u001b[0m \u001b[38;5;124;03m Resolves the class hierarchy for the class rendering the\u001b[39;00m\n\u001b[1;32m 1271\u001b[0m \u001b[38;5;124;03m object using any display hooks registered on Store.display\u001b[39;00m\n\u001b[1;32m 1272\u001b[0m \u001b[38;5;124;03m hooks. The output of all registered display_hooks is then\u001b[39;00m\n\u001b[1;32m 1273\u001b[0m \u001b[38;5;124;03m combined and returned.\u001b[39;00m\n\u001b[1;32m 1274\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1275\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mStore\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrender\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/options.py:1428\u001b[0m, in \u001b[0;36mStore.render\u001b[0;34m(cls, obj)\u001b[0m\n\u001b[1;32m 1426\u001b[0m data, metadata \u001b[38;5;241m=\u001b[39m {}, {}\n\u001b[1;32m 1427\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m hooks:\n\u001b[0;32m-> 1428\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[43mhook\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1429\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ret \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 1430\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/ipython/display_hooks.py:287\u001b[0m, in \u001b[0;36mpprint_display\u001b[0;34m(obj)\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m ip\u001b[38;5;241m.\u001b[39mdisplay_formatter\u001b[38;5;241m.\u001b[39mformatters[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtext/plain\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;241m.\u001b[39mpprint:\n\u001b[1;32m 286\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 287\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mdisplay\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mraw_output\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/ipython/display_hooks.py:255\u001b[0m, in \u001b[0;36mdisplay\u001b[0;34m(obj, raw_output, **kwargs)\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(obj, (CompositeOverlay, ViewableElement)):\n\u001b[1;32m 254\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m option_state(obj):\n\u001b[0;32m--> 255\u001b[0m output \u001b[38;5;241m=\u001b[39m \u001b[43melement_display\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 256\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(obj, (Layout, NdLayout, AdjointLayout)):\n\u001b[1;32m 257\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m option_state(obj):\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/ipython/display_hooks.py:149\u001b[0m, in \u001b[0;36mdisplay_hook..wrapped\u001b[0;34m(element)\u001b[0m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 148\u001b[0m max_frames \u001b[38;5;241m=\u001b[39m OutputSettings\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmax_frames\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m--> 149\u001b[0m mimebundle \u001b[38;5;241m=\u001b[39m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_frames\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmax_frames\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 150\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m mimebundle \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 151\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {}, {}\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/ipython/display_hooks.py:195\u001b[0m, in \u001b[0;36melement_display\u001b[0;34m(element, max_frames)\u001b[0m\n\u001b[1;32m 192\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mtype\u001b[39m(element) \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m Store\u001b[38;5;241m.\u001b[39mregistry[backend]:\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m--> 195\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrender\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/ipython/display_hooks.py:76\u001b[0m, in \u001b[0;36mrender\u001b[0;34m(obj, **kwargs)\u001b[0m\n\u001b[1;32m 73\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m renderer\u001b[38;5;241m.\u001b[39mfig \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpdf\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m 74\u001b[0m renderer \u001b[38;5;241m=\u001b[39m renderer\u001b[38;5;241m.\u001b[39minstance(fig\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpng\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 76\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrenderer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcomponents\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/renderer.py:396\u001b[0m, in \u001b[0;36mRenderer.components\u001b[0;34m(self, obj, fmt, comm, **kwargs)\u001b[0m\n\u001b[1;32m 394\u001b[0m embed \u001b[38;5;241m=\u001b[39m (\u001b[38;5;129;01mnot\u001b[39;00m (dynamic \u001b[38;5;129;01mor\u001b[39;00m streams \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mwidget_mode \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlive\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m config\u001b[38;5;241m.\u001b[39membed)\n\u001b[1;32m 395\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m embed \u001b[38;5;129;01mor\u001b[39;00m config\u001b[38;5;241m.\u001b[39mcomms \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdefault\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[0;32m--> 396\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_render_panel\u001b[49m\u001b[43m(\u001b[49m\u001b[43mplot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43membed\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 397\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_render_ipywidget(plot)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/renderer.py:403\u001b[0m, in \u001b[0;36mRenderer._render_panel\u001b[0;34m(self, plot, embed, comm)\u001b[0m\n\u001b[1;32m 401\u001b[0m doc \u001b[38;5;241m=\u001b[39m Document()\n\u001b[1;32m 402\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m config\u001b[38;5;241m.\u001b[39mset(embed\u001b[38;5;241m=\u001b[39membed):\n\u001b[0;32m--> 403\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[43mplot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mlayout\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_render_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 404\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m embed:\n\u001b[1;32m 405\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m render_model(model, comm)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/viewable.py:737\u001b[0m, in \u001b[0;36mViewable._render_model\u001b[0;34m(self, doc, comm)\u001b[0m\n\u001b[1;32m 735\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m comm \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 736\u001b[0m comm \u001b[38;5;241m=\u001b[39m state\u001b[38;5;241m.\u001b[39m_comm_manager\u001b[38;5;241m.\u001b[39mget_server_comm()\n\u001b[0;32m--> 737\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_root\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 739\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39mtheme\u001b[38;5;241m.\u001b[39mbokeh_theme:\n\u001b[1;32m 740\u001b[0m doc\u001b[38;5;241m.\u001b[39mtheme \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39mtheme\u001b[38;5;241m.\u001b[39mbokeh_theme\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/layout/base.py:318\u001b[0m, in \u001b[0;36mPanel.get_root\u001b[0;34m(self, doc, comm, preprocess)\u001b[0m\n\u001b[1;32m 314\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_root\u001b[39m(\n\u001b[1;32m 315\u001b[0m \u001b[38;5;28mself\u001b[39m, doc: Optional[Document] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m, comm: Optional[Comm] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 316\u001b[0m preprocess: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 317\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Model:\n\u001b[0;32m--> 318\u001b[0m root \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_root\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreprocess\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 319\u001b[0m \u001b[38;5;66;03m# ALERT: Find a better way to handle this\u001b[39;00m\n\u001b[1;32m 320\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(root, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstyles\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124moverflow-x\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m root\u001b[38;5;241m.\u001b[39mstyles:\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/viewable.py:668\u001b[0m, in \u001b[0;36mRenderable.get_root\u001b[0;34m(self, doc, comm, preprocess)\u001b[0m\n\u001b[1;32m 666\u001b[0m wrapper \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39m_wrapper(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 667\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m wrapper \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n\u001b[0;32m--> 668\u001b[0m root \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 669\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m preprocess:\n\u001b[1;32m 670\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_preprocess(root)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/layout/base.py:184\u001b[0m, in \u001b[0;36mPanel._get_model\u001b[0;34m(self, doc, root, parent, comm)\u001b[0m\n\u001b[1;32m 182\u001b[0m root \u001b[38;5;241m=\u001b[39m root \u001b[38;5;129;01mor\u001b[39;00m model\n\u001b[1;32m 183\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_models[root\u001b[38;5;241m.\u001b[39mref[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m (model, parent)\n\u001b[0;32m--> 184\u001b[0m objects, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_objects\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 185\u001b[0m props \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_properties(doc)\n\u001b[1;32m 186\u001b[0m props[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_property_mapping[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobjects\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m objects\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/layout/base.py:166\u001b[0m, in \u001b[0;36mPanel._get_objects\u001b[0;34m(self, model, old_objects, doc, root, comm)\u001b[0m\n\u001b[1;32m 164\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 165\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 166\u001b[0m child \u001b[38;5;241m=\u001b[39m \u001b[43mpane\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 167\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RerenderError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 168\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/pane/holoviews.py:429\u001b[0m, in \u001b[0;36mHoloViews._get_model\u001b[0;34m(self, doc, root, parent, comm)\u001b[0m\n\u001b[1;32m 427\u001b[0m plot \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobject\n\u001b[1;32m 428\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 429\u001b[0m plot \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_render\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 431\u001b[0m plot\u001b[38;5;241m.\u001b[39mpane \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\n\u001b[1;32m 432\u001b[0m backend \u001b[38;5;241m=\u001b[39m plot\u001b[38;5;241m.\u001b[39mrenderer\u001b[38;5;241m.\u001b[39mbackend\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/panel/pane/holoviews.py:525\u001b[0m, in \u001b[0;36mHoloViews._render\u001b[0;34m(self, doc, comm, root)\u001b[0m\n\u001b[1;32m 522\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m comm:\n\u001b[1;32m 523\u001b[0m kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcomm\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m comm\n\u001b[0;32m--> 525\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrenderer\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_plot\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mobject\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/bokeh/renderer.py:68\u001b[0m, in \u001b[0;36mBokehRenderer.get_plot\u001b[0;34m(self_or_cls, obj, doc, renderer, **kwargs)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[38;5;129m@bothmethod\u001b[39m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_plot\u001b[39m(self_or_cls, obj, doc\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, renderer\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 63\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 64\u001b[0m \u001b[38;5;124;03m Given a HoloViews Viewable return a corresponding plot instance.\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \u001b[38;5;124;03m Allows supplying a document attach the plot to, useful when\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;124;03m combining the bokeh model with another plot.\u001b[39;00m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 68\u001b[0m plot \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_plot\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mrenderer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m plot\u001b[38;5;241m.\u001b[39mdocument \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 70\u001b[0m plot\u001b[38;5;241m.\u001b[39mdocument \u001b[38;5;241m=\u001b[39m Document() \u001b[38;5;28;01mif\u001b[39;00m self_or_cls\u001b[38;5;241m.\u001b[39mnotebook_context \u001b[38;5;28;01melse\u001b[39;00m curdoc()\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/renderer.py:239\u001b[0m, in \u001b[0;36mRenderer.get_plot\u001b[0;34m(self_or_cls, obj, doc, renderer, comm, **kwargs)\u001b[0m\n\u001b[1;32m 236\u001b[0m defaults \u001b[38;5;241m=\u001b[39m [kd\u001b[38;5;241m.\u001b[39mdefault \u001b[38;5;28;01mfor\u001b[39;00m kd \u001b[38;5;129;01min\u001b[39;00m plot\u001b[38;5;241m.\u001b[39mdimensions]\n\u001b[1;32m 237\u001b[0m init_key \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtuple\u001b[39m(v \u001b[38;5;28;01mif\u001b[39;00m d \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m d \u001b[38;5;28;01mfor\u001b[39;00m v, d \u001b[38;5;129;01min\u001b[39;00m\n\u001b[1;32m 238\u001b[0m \u001b[38;5;28mzip\u001b[39m(plot\u001b[38;5;241m.\u001b[39mkeys[\u001b[38;5;241m0\u001b[39m], defaults))\n\u001b[0;32m--> 239\u001b[0m \u001b[43mplot\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mupdate\u001b[49m\u001b[43m(\u001b[49m\u001b[43minit_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 240\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 241\u001b[0m plot \u001b[38;5;241m=\u001b[39m obj\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/plot.py:956\u001b[0m, in \u001b[0;36mDimensionedPlot.update\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 954\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mupdate\u001b[39m(\u001b[38;5;28mself\u001b[39m, key):\n\u001b[1;32m 955\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m (\u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mkeys[\u001b[38;5;241m0\u001b[39m]) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mdrawn:\n\u001b[0;32m--> 956\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minitialize_plot\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 957\u001b[0m item \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;21m__getitem__\u001b[39m(key)\n\u001b[1;32m 958\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtraverse(\u001b[38;5;28;01mlambda\u001b[39;00m x: \u001b[38;5;28msetattr\u001b[39m(x, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_updated\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mTrue\u001b[39;00m))\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/bokeh/element.py:2130\u001b[0m, in \u001b[0;36mElementPlot.initialize_plot\u001b[0;34m(self, ranges, plot, plots, source)\u001b[0m\n\u001b[1;32m 2128\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mautorange:\n\u001b[1;32m 2129\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_setup_autorange()\n\u001b[0;32m-> 2130\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_init_glyphs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mplot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43melement\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mranges\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msource\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2131\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moverlaid:\n\u001b[1;32m 2132\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_update_plot(key, plot, style_element)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/bokeh/element.py:2030\u001b[0m, in \u001b[0;36mElementPlot._init_glyphs\u001b[0;34m(self, plot, element, ranges, source)\u001b[0m\n\u001b[1;32m 2028\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 2029\u001b[0m style \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstyle[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcyclic_index]\n\u001b[0;32m-> 2030\u001b[0m data, mapping, style \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_data\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mranges\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstyle\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2031\u001b[0m current_id \u001b[38;5;241m=\u001b[39m element\u001b[38;5;241m.\u001b[39m_plot_id\n\u001b[1;32m 2033\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m abbreviated_exception():\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/plotting/bokeh/chart.py:370\u001b[0m, in \u001b[0;36mCurvePlot.get_data\u001b[0;34m(self, element, ranges, style)\u001b[0m\n\u001b[1;32m 367\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {}, \u001b[38;5;28mdict\u001b[39m(x\u001b[38;5;241m=\u001b[39mx, y\u001b[38;5;241m=\u001b[39my), style\n\u001b[1;32m 369\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124msteps\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39minterpolation:\n\u001b[0;32m--> 370\u001b[0m element \u001b[38;5;241m=\u001b[39m \u001b[43minterpolate_curve\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minterpolation\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minterpolation\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 371\u001b[0m data \u001b[38;5;241m=\u001b[39m {x: element\u001b[38;5;241m.\u001b[39mdimension_values(xidx),\n\u001b[1;32m 372\u001b[0m y: element\u001b[38;5;241m.\u001b[39mdimension_values(yidx)}\n\u001b[1;32m 373\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_hover_data(data, element)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/param/parameterized.py:4468\u001b[0m, in \u001b[0;36mParameterizedFunction.__new__\u001b[0;34m(class_, *args, **params)\u001b[0m\n\u001b[1;32m 4466\u001b[0m inst \u001b[38;5;241m=\u001b[39m class_\u001b[38;5;241m.\u001b[39minstance()\n\u001b[1;32m 4467\u001b[0m inst\u001b[38;5;241m.\u001b[39mparam\u001b[38;5;241m.\u001b[39m_set_name(class_\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m)\n\u001b[0;32m-> 4468\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43minst\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/operation.py:220\u001b[0m, in \u001b[0;36mOperation.__call__\u001b[0;34m(self, element, **kwargs)\u001b[0m\n\u001b[1;32m 218\u001b[0m kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlink_dataset\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_propagate_dataset\n\u001b[1;32m 219\u001b[0m kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mlink_inputs\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp\u001b[38;5;241m.\u001b[39mlink_inputs\n\u001b[0;32m--> 220\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43melement\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapply\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/accessors.py:43\u001b[0m, in \u001b[0;36mAccessorPipelineMeta.pipelined..pipelined_call\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 40\u001b[0m inst\u001b[38;5;241m.\u001b[39m_obj\u001b[38;5;241m.\u001b[39m_in_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 42\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 43\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;21;43m__call__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m in_method:\n\u001b[1;32m 46\u001b[0m init_op \u001b[38;5;241m=\u001b[39m factory\u001b[38;5;241m.\u001b[39minstance(\n\u001b[1;32m 47\u001b[0m output_type\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mtype\u001b[39m(inst),\n\u001b[1;32m 48\u001b[0m kwargs\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode\u001b[39m\u001b[38;5;124m'\u001b[39m: \u001b[38;5;28mgetattr\u001b[39m(inst, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mmode\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)},\n\u001b[1;32m 49\u001b[0m )\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/accessors.py:203\u001b[0m, in \u001b[0;36mApply.__call__\u001b[0;34m(self, apply_function, streams, link_inputs, link_dataset, dynamic, per_element, **kwargs)\u001b[0m\n\u001b[1;32m 201\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(apply_function, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdynamic\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m 202\u001b[0m inner_kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdynamic\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mFalse\u001b[39;00m\n\u001b[0;32m--> 203\u001b[0m new_obj \u001b[38;5;241m=\u001b[39m \u001b[43mapply_function\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43minner_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 204\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (link_dataset \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_obj, Dataset) \u001b[38;5;129;01mand\u001b[39;00m\n\u001b[1;32m 205\u001b[0m \u001b[38;5;28misinstance\u001b[39m(new_obj, Dataset) \u001b[38;5;129;01mand\u001b[39;00m new_obj\u001b[38;5;241m.\u001b[39m_dataset \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 206\u001b[0m new_obj\u001b[38;5;241m.\u001b[39m_dataset \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_obj\u001b[38;5;241m.\u001b[39mdataset\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/operation.py:214\u001b[0m, in \u001b[0;36mOperation.__call__\u001b[0;34m(self, element, **kwargs)\u001b[0m\n\u001b[1;32m 210\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m element\u001b[38;5;241m.\u001b[39mclone([(k, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_apply(el, key\u001b[38;5;241m=\u001b[39mk))\n\u001b[1;32m 211\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k, el \u001b[38;5;129;01min\u001b[39;00m element\u001b[38;5;241m.\u001b[39mitems()])\n\u001b[1;32m 212\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m ((\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_per_element \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(element, Element)) \u001b[38;5;129;01mor\u001b[39;00m\n\u001b[1;32m 213\u001b[0m (\u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_per_element \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(element, ViewableElement))):\n\u001b[0;32m--> 214\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_apply\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 215\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstreams\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m kwargs:\n\u001b[1;32m 216\u001b[0m kwargs[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstreams\u001b[39m\u001b[38;5;124m'\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mp\u001b[38;5;241m.\u001b[39mstreams\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/operation.py:141\u001b[0m, in \u001b[0;36mOperation._apply\u001b[0;34m(self, element, key)\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m in_method:\n\u001b[1;32m 140\u001b[0m element\u001b[38;5;241m.\u001b[39m_in_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 141\u001b[0m ret \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process\u001b[49m\u001b[43m(\u001b[49m\u001b[43melement\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(element, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_in_method\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m in_method:\n\u001b[1;32m 143\u001b[0m element\u001b[38;5;241m.\u001b[39m_in_method \u001b[38;5;241m=\u001b[39m in_method\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/operation/element.py:1099\u001b[0m, in \u001b[0;36minterpolate_curve._process\u001b[0;34m(self, element, key)\u001b[0m\n\u001b[1;32m 1098\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_process\u001b[39m(\u001b[38;5;28mself\u001b[39m, element, key\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[0;32m-> 1099\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43melement\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process_layer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mElement\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/data/__init__.py:196\u001b[0m, in \u001b[0;36mPipelineMeta.pipelined..pipelined_fn\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m inst\u001b[38;5;241m.\u001b[39m_in_method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 195\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 196\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[43mmethod_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 197\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m PipelineMeta\u001b[38;5;241m.\u001b[39mdisable:\n\u001b[1;32m 198\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m result\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/data/__init__.py:1213\u001b[0m, in \u001b[0;36mDataset.map\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1211\u001b[0m \u001b[38;5;129m@wraps\u001b[39m(LabelledData\u001b[38;5;241m.\u001b[39mmap)\n\u001b[1;32m 1212\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmap\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[0;32m-> 1213\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmap\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/core/dimension.py:695\u001b[0m, in \u001b[0;36mLabelledData.map\u001b[0;34m(self, map_fn, specs, clone)\u001b[0m\n\u001b[1;32m 693\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m deep_mapped\n\u001b[1;32m 694\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 695\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmap_fn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mif\u001b[39;00m applies \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mself\u001b[39m\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/operation/element.py:1093\u001b[0m, in \u001b[0;36minterpolate_curve._process_layer\u001b[0;34m(self, element, key)\u001b[0m\n\u001b[1;32m 1091\u001b[0m x \u001b[38;5;241m=\u001b[39m x\u001b[38;5;241m.\u001b[39mastype(dt_type)\n\u001b[1;32m 1092\u001b[0m dvals \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtuple\u001b[39m(element\u001b[38;5;241m.\u001b[39mdimension_values(d) \u001b[38;5;28;01mfor\u001b[39;00m d \u001b[38;5;129;01min\u001b[39;00m element\u001b[38;5;241m.\u001b[39mdimensions()[\u001b[38;5;241m1\u001b[39m:])\n\u001b[0;32m-> 1093\u001b[0m xs, dvals \u001b[38;5;241m=\u001b[39m \u001b[43mINTERPOLATE_FUNCS\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43minterpolation\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[43mx\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdvals\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1094\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_datetime:\n\u001b[1;32m 1095\u001b[0m xs \u001b[38;5;241m=\u001b[39m xs\u001b[38;5;241m.\u001b[39mastype(dt_type)\n", - "File \u001b[0;32m~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/holoviews/operation/element.py:1055\u001b[0m, in \u001b[0;36minterpolate_curve.pts_to_midstep\u001b[0;34m(cls, x, values)\u001b[0m\n\u001b[1;32m 1052\u001b[0m value_steps \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mtuple\u001b[39m(np\u001b[38;5;241m.\u001b[39mempty(\u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m \u001b[38;5;28mlen\u001b[39m(x), dtype\u001b[38;5;241m=\u001b[39mv\u001b[38;5;241m.\u001b[39mdtype) \u001b[38;5;28;01mfor\u001b[39;00m v \u001b[38;5;129;01min\u001b[39;00m values)\n\u001b[1;32m 1054\u001b[0m steps[\u001b[38;5;241m1\u001b[39m:\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m:\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m=\u001b[39m steps[\u001b[38;5;241m2\u001b[39m::\u001b[38;5;241m2\u001b[39m] \u001b[38;5;241m=\u001b[39m x[:\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m+\u001b[39m (x[\u001b[38;5;241m1\u001b[39m:] \u001b[38;5;241m-\u001b[39m x[:\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m])\u001b[38;5;241m/\u001b[39m\u001b[38;5;241m2\u001b[39m\n\u001b[0;32m-> 1055\u001b[0m steps[\u001b[38;5;241m0\u001b[39m], steps[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[43mx\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m, x[\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m]\n\u001b[1;32m 1057\u001b[0m val_arrays \u001b[38;5;241m=\u001b[39m []\n\u001b[1;32m 1058\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m v, s \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(values, value_steps):\n", - "\u001b[0;31mIndexError\u001b[0m: index 0 is out of bounds for axis 0 with size 0" - ] + "data": {}, + "metadata": {}, + "output_type": "display_data" }, { "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ], "text/plain": [ ":Curve [month] (n_edits)" ] }, - "execution_count": 26, - "metadata": {}, + "execution_count": 12, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1079" + } + }, "output_type": "execute_result" } ], @@ -351,7 +378,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 13, "id": "9550233a-592f-4d4c-9d97-f334bdd503d2", "metadata": {}, "outputs": [], @@ -384,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 14, "id": "6d5bf28a-a70c-4cc6-8633-8dad9d36a744", "metadata": {}, "outputs": [], @@ -429,17 +456,17 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 15, "id": "95b75d40-3a35-40a3-b215-6e673892af7e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" } @@ -480,14 +507,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 16, "id": "d79e15a5-d969-4fb6-a548-06d147334c1b", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8d0780a21a21470c936398b675e95a4f", + "model_id": "9b46fb7f5bc342cb895be8b4b243badd", "version_major": 2, "version_minor": 1 }, @@ -501,7 +528,7 @@ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "79f266344362405381e8e725a9db5a1a", + "model_id": "bcd2f0f5aa3449adb6fa6bd29f88d691", "version_major": 2, "version_minor": 0 }, diff --git a/_sources/book/02b_buildings_currentness_DuckDB_only.ipynb b/_sources/book/02b_buildings_currentness_DuckDB_only.ipynb index 86466fc..a1547c2 100644 --- a/_sources/book/02b_buildings_currentness_DuckDB_only.ipynb +++ b/_sources/book/02b_buildings_currentness_DuckDB_only.ipynb @@ -22,13 +22,13 @@ "id": "23f48837-22c6-4c12-ab34-a99881cd844b", "metadata": {}, "source": [ - "# Getting started\n", + "## Getting started\n", "Set connection params." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "id": "331fd063-1ce7-46c9-96ea-e2984cf5459b", "metadata": {}, "outputs": [], @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "id": "96acb582-a7e9-440d-914d-969fcf25a5c1", "metadata": {}, "outputs": [], @@ -76,7 +76,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "id": "d668f6b2-5d83-43d0-8f36-93f676385216", "metadata": {}, "outputs": [ @@ -120,7 +120,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "id": "f79d24f5f976b9e3", "metadata": { "ExecuteTime": { @@ -163,14 +163,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "id": "4c0e802d-013b-43ac-87fa-5b22059f93fa", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "57657fe12bc14467a4e33c59bf132156", + "model_id": "8b0b959e81be4f5ca563cb9343d048ef", "version_major": 2, "version_minor": 0 }, @@ -185,7 +185,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "download took 6.076 sec.\n" + "download took 7.882 sec.\n" ] } ], @@ -233,7 +233,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "id": "07f16b43-3cda-4a76-a99d-1ce96633ca66", "metadata": {}, "outputs": [ @@ -757,11 +757,11 @@ "application/vnd.holoviews_exec.v0+json": "", "text/html": [ "
\n", - "
\n", + "
\n", "
\n", "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1002" + } + }, + "output_type": "display_data" + }, { "data": {}, "metadata": {}, @@ -312,12 +984,12 @@ "data": { "application/vnd.holoviews_exec.v0+json": "", "text/html": [ - "
\n", - "
\n", + "
\n", + "
\n", "
\n", " - + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -858,7 +838,7 @@

Special Attributes for OSM Relations

next

-

DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions

+

Download latest OSM data as GeoPackage

diff --git a/book/00_motivation.html b/book/00_motivation.html index 5a299f0..a6c21da 100644 --- a/book/00_motivation.html +++ b/book/00_motivation.html @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

diff --git a/book/01a_Data_Extraction_DuckDB_PyIceberg.html b/book/01a_Data_Extraction_DuckDB_PyIceberg.html index 7be695d..ea518d3 100644 --- a/book/01a_Data_Extraction_DuckDB_PyIceberg.html +++ b/book/01a_Data_Extraction_DuckDB_PyIceberg.html @@ -8,7 +8,7 @@ - DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions — SOTM 2024 ohsome-data-insights Workshop + Download latest OSM data as GeoPackage — SOTM 2024 ohsome-data-insights Workshop @@ -60,7 +60,7 @@ - + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -445,7 +425,7 @@ @@ -473,24 +451,19 @@

Contents

-
-

DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions#

-
-

Note

-
    -
  1. Set the connection params and configure DuckDB.

  2. -
  3. Download the data in 3 steps:

    +
    +

    Download latest OSM data as GeoPackage#

    +

    In this notebook we demonstrate how you can download the latest OSM data in GeoPackage format.

    +

    These are the steps you see further down:

      -
    • Download data with PyIceberg.

    • -
    • Fitler and process data with DuckDB.

    • +
    • Set the connection parameters.

    • +
    • Prepare your input parameters, e.g. define area of interest and OSM tag filter.

    • +
    • Download data using PyIceberg and DuckDB.

    • +
    • Filter and process data with DuckDB.

    • Export results into geopackage file with GeoPandas.

    -
  4. -
-
-
-
-

Getting started#

+
+

Getting started#

Set connection params.

@@ -511,7 +484,6 @@

Getting startedconfig={ 'threads': 8, 'max_memory': '8GB', - # 'enable_object_cache': True } ) con.install_extension("spatial") @@ -548,8 +520,8 @@

Getting started -

Download data with PyIceberg table scan#

+
+

Download data with PyIceberg table scan#

In this step we can already filter all OSM contributions by four major factors. We will perform more detailed filtering (e.g. for OSM tags values) later:

-
-

Filter and process data with DuckDB#

+
+

Filter and process data with DuckDB#

Second, we use DuckDB to perform the more detailed filtering. In this step we can filter for:

-
-

Save data as GeoPackage#

+
+

Save data as GeoPackage#

Show the structure of the data we have just downloaded.

@@ -709,18 +662,17 @@

Save data as GeoPackage

-
┌─────────────┬────────────────────────────────────────────────────────────┬─────────┬─────────┬─────────┬─────────┐
-│ column_name │                        column_type                         │  null   │   key   │ default │  extra  │
-│   varchar   │                          varchar                           │ varchar │ varchar │ varchar │ varchar │
-├─────────────┼────────────────────────────────────────────────────────────┼─────────┼─────────┼─────────┼─────────┤
-│ user_id     │ INTEGER                                                    │ YES     │ NULL    │ NULL    │ NULL    │
-│ valid_from  │ TIMESTAMP                                                  │ YES     │ NULL    │ NULL    │ NULL    │
-│ osm_id      │ VARCHAR                                                    │ YES     │ NULL    │ NULL    │ NULL    │
-│ osm_version │ INTEGER                                                    │ YES     │ NULL    │ NULL    │ NULL    │
-│ tags        │ MAP(VARCHAR, VARCHAR)                                      │ YES     │ NULL    │ NULL    │ NULL    │
-│ bbox        │ STRUCT(xmin DOUBLE, ymin DOUBLE, xmax DOUBLE, ymax DOUBLE) │ YES     │ NULL    │ NULL    │ NULL    │
-│ geometry    │ VARCHAR                                                    │ YES     │ NULL    │ NULL    │ NULL    │
-└─────────────┴────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┘
+
┌─────────────┬───────────────────────┬─────────┬─────────┬─────────┬─────────┐
+│ column_name │      column_type      │  null   │   key   │ default │  extra  │
+│   varchar   │        varchar        │ varchar │ varchar │ varchar │ varchar │
+├─────────────┼───────────────────────┼─────────┼─────────┼─────────┼─────────┤
+│ user_id     │ INTEGER               │ YES     │ NULL    │ NULL    │ NULL    │
+│ valid_from  │ TIMESTAMP             │ YES     │ NULL    │ NULL    │ NULL    │
+│ osm_id      │ VARCHAR               │ YES     │ NULL    │ NULL    │ NULL    │
+│ osm_version │ INTEGER               │ YES     │ NULL    │ NULL    │ NULL    │
+│ tags        │ MAP(VARCHAR, VARCHAR) │ YES     │ NULL    │ NULL    │ NULL    │
+│ geometry    │ VARCHAR               │ YES     │ NULL    │ NULL    │ NULL    │
+└─────────────┴───────────────────────┴─────────┴─────────┴─────────┴─────────┘
 
@@ -738,12 +690,16 @@

Save data as GeoPackage

-
┌─────────┬────────────┬─────────┬─────────────┬──────────────────────┬─────────────────────────────────────┬──────────┐
-│ user_id │ valid_from │ osm_id  │ osm_version │         tags         │                bbox                 │ geometry │
-│  int32  │ timestamp  │ varchar │    int32    │ map(varchar, varch…  │ struct(xmin double, ymin double, …  │ varchar  │
-├─────────┴────────────┴─────────┴─────────────┴──────────────────────┴─────────────────────────────────────┴──────────┤
-│                                                        0 rows                                                        │
-└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
+
┌──────────┬─────────────────────┬────────────────┬─────────────┬──────────────────────┬───────────────────────────────┐
+│ user_id  │     valid_from      │     osm_id     │ osm_version │         tags         │           geometry            │
+│  int32   │      timestamp      │    varchar     │    int32    │ map(varchar, varch…  │            varchar            │
+├──────────┼─────────────────────┼────────────────┼─────────────┼──────────────────────┼───────────────────────────────┤
+│  1122708 │ 2021-09-07 23:04:37 │ way/500108893  │           5 │ {building=yes, rai…  │ POLYGON ((36.89974139999999…  │
+│ 13366421 │ 2023-01-10 06:13:29 │ way/1130552834 │           1 │ {building=yes, add…  │ POLYGON ((36.8719435 -1.241…  │
+│ 18306654 │ 2023-11-11 01:58:08 │ way/88406439   │          16 │ {building=yes, aer…  │ POLYGON ((36.9238579 -1.331…  │
+│ 17770290 │ 2022-11-27 17:57:39 │ way/1117632750 │           1 │ {building=yes}       │ POLYGON ((36.6824404 -1.442…  │
+│  3733993 │ 2023-04-11 09:02:45 │ way/1161291128 │           1 │ {building=yes}       │ POLYGON ((36.6824528 -1.438…  │
+└──────────┴─────────────────────┴────────────────┴─────────────┴──────────────────────┴───────────────────────────────┘
 
@@ -764,7 +720,7 @@

Save data as GeoPackage

@@ -777,12 +733,7 @@

Save data as GeoPackagestart_time = time.time() query = f""" - SELECT osm_data.* - FROM - osm_data, - st_read('{area_of_interest_file}') as aoi - WHERE 1=1 - and ST_Intersects(st_GeomFromText(osm_data.geometry), aoi.geom) + SELECT * FROM osm_data """ df = con.sql(query).df() @@ -799,15 +750,16 @@

Save data as GeoPackage

-
processing took 0.109 sec.
+
processing took 16.175 sec.
 
-
-

Work with the data in QGIS#

+
+

Work with the data in QGIS#

Add your geopackage file in QGIS, e.g. via drag-and-drop or through file manager.

+

@@ -1025,7 +810,7 @@

Display currentness of OSM features on map - +

@@ -1079,7 +864,7 @@

Display currentness of OSM features on map

previous

-

DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions

+

Download latest OSM data as GeoPackage

Display currentness of OSM features on map - diff --git a/book/02b_buildings_currentness_DuckDB_only.html b/book/02b_buildings_currentness_DuckDB_only.html index 697d8c1..fce017c 100644 --- a/book/02b_buildings_currentness_DuckDB_only.html +++ b/book/02b_buildings_currentness_DuckDB_only.html @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -455,16 +435,12 @@

Contents

@@ -486,9 +462,8 @@

DuckDB: Currentness of Buildings -

Getting started#

+
+

Getting started#

Set connection params.

@@ -547,6 +522,7 @@

Getting started

Prepare the input parameters for your analysis#

@@ -615,7 +591,7 @@

Get the Data -
download took 6.076 sec.
+
download took 7.882 sec.
 
@@ -1133,11 +1109,11 @@

Plot currentness chart with polars and hvplot
-
+

+

@@ -1445,16 +1421,12 @@

Display currentness of OSM features on map - diff --git a/book/03_hot_tm_project_analysis.html b/book/03_hot_tm_project_analysis.html index e1484f8..9b31f9c 100644 --- a/book/03_hot_tm_project_analysis.html +++ b/book/03_hot_tm_project_analysis.html @@ -60,8 +60,8 @@ - - + + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -455,17 +435,13 @@

Contents

@@ -488,9 +464,8 @@

HOT Tasking Manager project analysis -

Getting started#

+
+

Getting started#

Set connection params.

diff --git a/book/03_mapillary_data_analysis.html b/book/03_mapillary_data_analysis.html index 6c42fcd..9f1f896 100644 --- a/book/03_mapillary_data_analysis.html +++ b/book/03_mapillary_data_analysis.html @@ -8,7 +8,7 @@ - DuckDB: Mapillary Coverage Analysis — SOTM 2024 ohsome-data-insights Workshop + Mapillary Coverage Analysis — SOTM 2024 ohsome-data-insights Workshop @@ -60,7 +60,7 @@ - + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -445,7 +425,7 @@ @@ -476,8 +452,8 @@

Contents

-
-

DuckDB: Mapillary Coverage Analysis#

+
+

Mapillary Coverage Analysis#

In this notebook we demonstrate how to combine two datasets: Mapillary sequences and OSM road network.

We want to find out which parts of the road network in a city are not yet covered by Mapillary street level imagery.

These are the steps you see further down:

@@ -488,9 +464,8 @@

DuckDB: Mapillary Coverage Analysis -

Getting started#

+
+

Getting started#

Set connection params.

Set connection to MinIO object storage.

@@ -549,14 +544,15 @@

Getting started

Prepare the input parameters for your analysis#

-
# Set s3 path for parquet input data
-osm_parquet_data_path = "s3a://heigit-ohsome-sotm24/data/geo_sort_ext/contributions_germany/**"
-#osm_parquet_data_path = "s3a://heigit-ohsome-sotm24/data/geo_sort_ext/global_wkt_smaller/**"
-
+
# Set iceberg table
+namespace = 'geo_sort'
+tablename = 'contributions'
+icebergtable = catalog.load_table((namespace, tablename))
 
 mapillary_parquet_data_path = "s3a://heigit-ohsome-sotm24/data/mapillary_sequences/*"
 
@@ -573,7 +569,7 @@ 

Prepare the input parameters for your analysisselected_region = 'nairobi' xmin, ymin, xmax, ymax = bboxes[selected_region] -area_of_interest_file =f"../data/{selected_region}.geojson" +area_of_interest_file = f"s3a://heigit-ohsome-sotm24/data/sample_data/{selected_region}.geojson" epsg_codes = { 'heidelberg': 'EPSG:32632', @@ -591,9 +587,43 @@

Prepare the input parameters for your analysis -

Get OSM data#

+
+

Get OSM data#

+

Download latest OSM data for bounding box.

+
+
+
import time
+start_time = time.time()
+
+icebergtable.scan(
+    row_filter=(
+        f"status = '{status}' "
+        f"and geometry_type = '{geometry_type}' "
+        f"and (xmax >= {xmin} and xmin <= {xmax}) "
+        f"and (ymax >= {ymin} and ymin <= {ymax}) "
+    ),
+    selected_fields=(
+        "user_id",
+        "osm_id",
+        "osm_version",
+        "valid_from",
+        "tags",
+        "geometry",
+    ),
+).to_duckdb('raw_osm_data',connection=con)
+
+download_time = round(time.time() - start_time, 3)
+print(f"download took {download_time} sec.")
+
+
+
+
+
download took 17.048 sec.
+
+
+
+
+

Clip OSM highways with to area of interest and calculate road length in kilometer.

-
download took 1.619 sec.
+
processing took 3.557 sec.
 
-

Display OSM data.

+

Display OSM data on a map.

import geopandas as gpd
@@ -683,84 +709,12 @@ 

Get OSM data -
---------------------------------------------------------------------------
-ValueError                                Traceback (most recent call last)
-Cell In[7], line 4
-      1 import lonboard
-      3 # the lonboard map definition
-----> 4 osm_layer = lonboard.PathLayer.from_geopandas(
-      5     osm_data_gdf,
-      6     get_color=[0,255,255,255],
-      7 )
-      9 view_state = {
-     10     "longitude": xmin + ((xmax - xmin) / 2),
-     11     "latitude": ymin + ((ymax - ymin) / 2),
-     12     "zoom": 12
-     13 }
-     15 osm_map = lonboard.Map(
-     16     basemap_style=lonboard.basemap.CartoBasemap.Positron,
-     17     layers=[osm_layer],
-     18     view_state=view_state
-     19 )
-
-File ~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/lonboard/_layer.py:1211, in PathLayer.from_geopandas(cls, gdf, auto_downcast, **kwargs)
-   1203 @classmethod
-   1204 def from_geopandas(
-   1205     cls,
-   (...)
-   1209     **kwargs: Unpack[PathLayerKwargs],
-   1210 ) -> Self:
--> 1211     return super().from_geopandas(gdf=gdf, auto_downcast=auto_downcast, **kwargs)
-
-File ~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/lonboard/_layer.py:333, in BaseArrowLayer.from_geopandas(cls, gdf, auto_downcast, **kwargs)
-    329 if auto_downcast:
-    330     # Note: we don't deep copy because we don't need to clone geometries
-    331     gdf = _auto_downcast(gdf.copy())  # type: ignore
---> 333 table = geopandas_to_geoarrow(gdf)
-    334 return cls(table=table, **kwargs)
-
-File ~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/lonboard/_geoarrow/geopandas_interop.py:21, in geopandas_to_geoarrow(gdf, columns, preserve_index)
-     18     df_attr = df_attr[columns]
-     20 table = pa.Table.from_pandas(df_attr, preserve_index=preserve_index)
----> 21 field, geom_arr = construct_geometry_array(
-     22     np.array(gdf.geometry),
-     23     crs_str=gdf.crs.to_json() if gdf.crs is not None else None,
-     24 )
-     26 return table.append_column(field, geom_arr)
-
-File ~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/lonboard/_geoarrow/extension_types.py:292, in construct_geometry_array(shapely_arr, include_z, field_name, crs_str)
-    282 def construct_geometry_array(
-    283     shapely_arr: NDArray[np.object_],
-    284     include_z: Optional[bool] = None,
-   (...)
-    290     # extension metadata on the field without instantiating extension types into the
-    291     # global pyarrow registry
---> 292     geom_type, coords, offsets = shapely.to_ragged_array(
-    293         shapely_arr, include_z=include_z
-    294     )
-    296     if coords.shape[-1] == 2:
-    297         dims = CoordinateDimension.XY
-
-File ~/GIT_REPOS/sotm-2024-ohsome-data-insights-workshop/venv/lib/python3.12/site-packages/shapely/_ragged_array.py:292, in to_ragged_array(geometries, include_z)
-    287         raise ValueError(
-    288             "Geometry type combination is not supported "
-    289             f"({[GeometryType(t).name for t in geom_types]})"
-    290         )
-    291 else:
---> 292     raise ValueError(
-    293         "Geometry type combination is not supported "
-    294         f"({[GeometryType(t).name for t in geom_types]})"
-    295     )
-    297 return typ, coords, offsets
-
-ValueError: Geometry type combination is not supported ([])
-
-
-

+
-
-

Get Mapillary Data#

+
+

Get Mapillary Data#

+

We are going to download Mapillary sequences.

-
-

Find OSM ways not covered by (buffered) Mapillary sequence#

+
+

Find OSM ways not covered by (buffered) Mapillary sequence#

-
-

Calculate share of road network covered by Mapillary#

+
+

Calculate share of road network covered by Mapillary#

total_osm_length = osm_data_df["length_km"].sum()
@@ -996,26 +952,26 @@ 

Calculate share of road network covered by MapillaryCalculate share of road network covered by Mapillary

+
- - + + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -445,7 +425,7 @@
-

DuckDB: Country user activity map

+

User activity map

@@ -455,15 +435,11 @@

Contents

@@ -474,8 +450,8 @@

Contents

-
-

DuckDB: Country user activity map#

+
+

User activity map#

In this notebook we demonstrate how to analyze and visualize daily OSM user activity for a country.

These are the steps you see further down:

@@ -790,7 +797,7 @@

Display OSM user activity on map

previous

-

DuckDB: Mapillary Coverage Analysis

+

Mapillary Coverage Analysis

Display OSM user activity on map

next

-

DuckDB: Development of highways over time

+

Road Network Evolution

@@ -818,15 +825,11 @@

Display OSM user activity on map -

diff --git a/book/04_highways_timeline_DuckDB_only.html b/book/04_highways_timeline_DuckDB_only.html index 2cc79f2..15b9506 100644 --- a/book/04_highways_timeline_DuckDB_only.html +++ b/book/04_highways_timeline_DuckDB_only.html @@ -8,7 +8,7 @@ - DuckDB: Development of highways over time — SOTM 2024 ohsome-data-insights Workshop + Road Network Evolution — SOTM 2024 ohsome-data-insights Workshop @@ -61,7 +61,7 @@ - + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -445,7 +425,7 @@
-

DuckDB: Development of highways over time

+

Road Network Evolution

@@ -455,16 +435,12 @@

Contents

@@ -475,8 +451,8 @@

Contents

-
-

DuckDB: Development of highways over time#

+
+

Road Network Evolution#

In this notebook we demonstrate how to analyze and visualize the development highways in OSM over time.

These are the steps you see further down:

@@ -936,7 +1508,7 @@

Display OSM highway evolution on map

previous

-

DuckDB: Country user activity map

+

User activity map

Display OSM highway evolution on map -

diff --git a/book/05_partitioning_and_sorting.html b/book/05_partitioning_and_sorting.html index 4086aa0..797d45d 100644 --- a/book/05_partitioning_and_sorting.html +++ b/book/05_partitioning_and_sorting.html @@ -61,7 +61,7 @@ - + @@ -183,52 +183,32 @@

Data Extraction

Simple Data Analysis

Data Integration

Advanced Data Analysis

Background

@@ -619,7 +599,7 @@

Sorting#<

previous

-

DuckDB: Development of highways over time

+

Road Network Evolution

  • Why should you be excited about ohsome-data-insights?
  • Connect to MinIO Object Store
  • -
  • Connect to Apache Iceberg
  • Data Structure
  • Data Extraction

    Simple Data Analysis

    Data Integration

    Advanced Data Analysis

    Background

    diff --git a/intro.html b/intro.html index 0d2d8d4..d71388e 100644 --- a/intro.html +++ b/intro.html @@ -184,52 +184,32 @@

    Data Extraction

    Simple Data Analysis

    Data Integration

    Advanced Data Analysis

    Background

    @@ -460,7 +440,6 @@

    Contact#< @@ -468,41 +447,27 @@

    Contact#<

    diff --git a/objects.inv b/objects.inv index 2413146..f8fbe86 100644 Binary files a/objects.inv and b/objects.inv differ diff --git a/search.html b/search.html index 948a0b7..9be332d 100644 --- a/search.html +++ b/search.html @@ -184,52 +184,32 @@

    Data Extraction

    Simple Data Analysis

    Data Integration

    Advanced Data Analysis

    Background

    diff --git a/searchindex.js b/searchindex.js index bf8f93e..5799661 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"1st level partition": [[13, "st-level-partition"]], "2nd level partition": [[13, "nd-level-partition"]], "Advanced Data Analysis": [[14, null]], "Background": [[14, null]], "Calculate share of road network covered by Mapillary": [[10, "calculate-share-of-road-network-covered-by-mapillary"]], "Connect to Apache Iceberg": [[1, null]], "Connect to Apache Iceberg Catalog via PyIceberg": [[1, "connect-to-apache-iceberg-catalog-via-pyiceberg"]], "Connect to MinIO Object Store": [[2, null]], "Connect to MinIO via DuckDB": [[2, "connect-to-minio-via-duckdb"]], "Contact": [[14, "contact"]], "Create Access Key": [[2, "create-access-key"]], "Data Extraction": [[14, null]], "Data Integration": [[14, null]], "Data Structure": [[3, null]], "Data integration": [[4, "data-integration"]], "Display OSM highway evolution on map": [[12, "display-osm-highway-evolution-on-map"]], "Display OSM user activity on map": [[11, "display-osm-user-activity-on-map"]], "Display OSM user statistics": [[9, "display-osm-user-statistics"]], "Display currentness of OSM features on map": [[7, "display-currentness-of-osm-features-on-map"], [8, "display-currentness-of-osm-features-on-map"]], "Download data OSM Data": [[9, "download-data-osm-data"]], "Download data with PyIceberg table scan": [[5, "download-data-with-pyiceberg-table-scan"]], "Download speed matters only in this step.": [[5, null], [6, null]], "Download with DuckDB": [[6, "download-with-duckdb"]], "DuckDB + PyIceberg: Currentness of Buildings": [[7, null]], "DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions": [[5, null]], "DuckDB: Country user activity map": [[11, null]], "DuckDB: Currentness of Buildings": [[8, null]], "DuckDB: Data Extraction from geo-sorted ohsome contributions": [[6, null]], "DuckDB: Development of highways over time": [[12, null]], "DuckDB: Mapillary Coverage Analysis": [[10, null]], "Enriched attributes": [[4, "enriched-attributes"]], "Fast data extraction": [[4, "fast-data-extraction"]], "Filter and process data with DuckDB": [[5, "filter-and-process-data-with-duckdb"]], "Filter data using OSM changeset information": [[9, "filter-data-using-osm-changeset-information"]], "Find OSM ways not covered by (buffered) Mapillary sequence": [[10, "find-osm-ways-not-covered-by-buffered-mapillary-sequence"]], "Fits your style": [[4, "fits-your-style"]], "General OSM Attributes": [[3, "general-osm-attributes"]], "Geo-sorted ohsome contributions": [[13, "geo-sorted-ohsome-contributions"]], "Geographic Attributes": [[3, "geographic-attributes"]], "Get Information about HOT Tasking Manager project": [[9, "get-information-about-hot-tasking-manager-project"]], "Get Mapillary Data": [[10, "get-mapillary-data"]], "Get OSM data": [[10, "get-osm-data"]], "Get an overview": [[1, "get-an-overview"]], "Get the Data": [[7, "get-the-data"], [8, "get-the-data"], [11, "get-the-data"], [12, "get-the-data"]], "Getting Started": [[14, null]], "Getting started": [[5, "getting-started"], [6, "getting-started"], [7, "getting-started"], [8, "getting-started"], [9, "getting-started"], [10, "getting-started"], [11, "getting-started"], [12, "getting-started"]], "HOT Tasking Manager project analysis": [[9, null]], "Log-In with OSM Account": [[2, "log-in-with-osm-account"]], "OSM Changeset Attributes": [[3, "osm-changeset-attributes"]], "Partitioning and Sorting": [[13, null]], "Partitions": [[13, "partitions"]], "Plot chart": [[12, "plot-chart"]], "Plot currentness chart with polars and hvplot": [[7, "plot-currentness-chart-with-polars-and-hvplot"], [8, "plot-currentness-chart-with-polars-and-hvplot"]], "Prepare the input parameters for your analysis": [[7, "prepare-the-input-parameters-for-your-analysis"], [8, "prepare-the-input-parameters-for-your-analysis"], [9, "prepare-the-input-parameters-for-your-analysis"], [10, "prepare-the-input-parameters-for-your-analysis"], [11, "prepare-the-input-parameters-for-your-analysis"], [12, "prepare-the-input-parameters-for-your-analysis"]], "Save data as GeoPackage": [[5, "save-data-as-geopackage"], [6, "save-data-as-geopackage"]], "Simple Data Analysis": [[14, null]], "Sorting": [[13, "sorting"], [13, "id1"]], "Special Attributes for OSM Map Features": [[3, "special-attributes-for-osm-map-features"]], "Special Attributes for OSM Relations": [[3, "special-attributes-for-osm-relations"]], "Time-sorted ohsome contributions": [[13, "time-sorted-ohsome-contributions"]], "Welcome to ohsome-data-insights Workshop @ SOTM 2024": [[14, null]], "What is Apache Iceberg?": [[1, "what-is-apache-iceberg"]], "Why should you be excited about ohsome-data-insights?": [[4, null]], "Work with the data in QGIS": [[5, "work-with-the-data-in-qgis"], [6, "work-with-the-data-in-qgis"]], "flexibility": [[4, "flexibility"]], "sotm-2024-ohsome-data-insights-workshop": [[0, null]]}, "docnames": ["README", "book/00_Iceberg_Catalog", "book/00_MinIO_Object_Store", "book/00_data_structure", "book/00_motivation", "book/01a_Data_Extraction_DuckDB_PyIceberg", "book/01b_Data_Extraction_DuckDB_only", "book/02a_buildings_currentness_DuckDB_PyIceberg", "book/02b_buildings_currentness_DuckDB_only", "book/03_hot_tm_project_analysis", "book/03_mapillary_data_analysis", "book/04_Country_User_Activity_DuckDB_only", "book/04_highways_timeline_DuckDB_only", "book/05_partitioning_and_sorting", "intro"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9}, "filenames": ["README.md", "book/00_Iceberg_Catalog.ipynb", "book/00_MinIO_Object_Store.ipynb", "book/00_data_structure.md", "book/00_motivation.md", "book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb", "book/01b_Data_Extraction_DuckDB_only.ipynb", "book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb", "book/02b_buildings_currentness_DuckDB_only.ipynb", "book/03_hot_tm_project_analysis.ipynb", "book/03_mapillary_data_analysis.ipynb", "book/04_Country_User_Activity_DuckDB_only.ipynb", "book/04_highways_timeline_DuckDB_only.ipynb", "book/05_partitioning_and_sorting.md", "intro.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 7, 9], "0": [1, 3, 5, 7, 8, 9, 10, 11, 12, 13], "00": [5, 6], "01": [5, 6, 11, 12], "012": 10, "01t00": [5, 6], "02": 11, "025": 7, "04": 10, "05": 6, "059": 10, "06": [5, 6, 11], "076": 8, "085": 10, "088345": [5, 6, 7, 8, 10, 12], "09": 6, "092": 10, "0x742148909ac0": 11, "0x7e30a802d6d0": [7, 8], "0x7f78dd8656d0": 12, "1": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "10": [1, 3, 6, 9, 10], "1000": [7, 8, 10, 11, 12], "1000px": [7, 8, 11, 12], "103887": [5, 6, 7, 8, 10, 12], "10394726": 9, "104": 9, "105": 10, "1052": 7, "1054": 7, "1055": 7, "1057": 7, "10570996": 9, "1058": 7, "109": 5, "1091": 7, "1092": 7, "1093": 7, "1094": 7, "1095": 7, "1098": 7, "1099": 7, "11": [1, 9, 10], "110": 10, "11010237": 9, "1134": 10, "114": 10, "115": 13, "11500943": 9, "117": 9, "12": [1, 7, 9, 10], "1203": 10, "1204": 10, "1205": 10, "1209": 10, "1210": 10, "1211": [7, 10], "1212": 7, "1213": 7, "126": 10, "1268": 7, "1269": 7, "1270": 7, "1271": 7, "1272": 7, "1273": 7, "1274": 7, "1275": 7, "13": [1, 5, 6, 7, 8, 9, 10, 12], "13007399": 9, "136": 10, "13722972": 9, "139": 7, "1391": 10, "14": [1, 9], "140": 7, "141": 7, "142": 7, "1426": 7, "1427": 7, "1428": 7, "1429": 7, "143": 7, "1430": 7, "1440840715635230871": 1, "147": 7, "148": 7, "149": 7, "14962448": 9, "15": [1, 9, 10, 11], "150": [3, 7, 9], "151": 7, "15320557": 9, "15320583": 9, "15996": 9, "16": [1, 9, 10], "163522": [5, 6, 7, 8, 10, 12], "164": [7, 10], "165": [7, 10], "166": 7, "16690030": 9, "167": [7, 9], "16739098": 9, "168": 7, "169": 12, "17": [1, 9, 10], "172": 10, "17340053": 9, "17496710": 9, "18": [1, 5, 9, 10], "180": 10, "182": 7, "183": [7, 10], "184": [7, 10], "185": 7, "186": [7, 9], "18790262": 9, "19": [1, 5, 6, 9, 10], "19063413": 9, "191": 10, "192": 7, "19297985": 9, "193": 7, "194": 10, "195": [7, 13], "196": 7, "197": 7, "198": [5, 7, 10], "1_000_000": 7, "2": [1, 3, 5, 6, 7, 9, 10, 11, 12, 13], "20": [1, 5, 9, 10], "200": 9, "2007": [7, 8], "2008": 12, "201": 7, "2012": 12, "20155561": 9, "2016": 6, "202": 7, "2023": 6, "2024": [5, 6, 7, 8, 10, 11, 12], "2025": 0, "202726": 6, "2028": 7, "2029": 7, "203": 7, "2030": 7, "2031": 7, "2033": 7, "204": 7, "20450590": 9, "205": 7, "206": 7, "20768452": 9, "208": 10, "20982460": 9, "21": [1, 6, 9, 10], "210": 7, "211": 7, "21125012": 9, "21160": 6, "21186164": 9, "212": [7, 10], "21207980": 9, "21230154": 9, "21256164": 9, "2128": 7, "21288883": 9, "2129": 7, "21292063": 9, "21292317": 9, "213": 7, "2130": 7, "21304240": 9, "2131": 7, "21314713": 9, "2132": 7, "21331501": 9, "21363124": 9, "21363912": 9, "21366183": 9, "214": 7, "215": 7, "216": [7, 10], "218": 7, "219": 7, "22": [1, 5, 9, 10], "220": 7, "222": 13, "226": 10, "23": [1, 5, 9, 10], "233": 10, "236": 7, "237": 7, "238": 7, "239": 7, "24": [1, 9, 10, 11], "240": 7, "241": 7, "243": 13, "245": 9, "247": 10, "25": [1, 9, 11], "2500": 11, "251": 9, "253": 7, "254": 7, "255": [7, 9, 10, 12], "256": 7, "257": [7, 10], "258": 10, "259": 10, "26": [1, 6, 9, 10], "261": 9, "263": 10, "269": 10, "27": [1, 9, 13], "28": [1, 9], "282": 10, "283": 10, "284": 10, "285": 7, "286": 7, "2868": 10, "287": [7, 10], "288": 10, "289": 10, "29": [1, 6, 9, 10], "290": 10, "291": 10, "292": 10, "293": 10, "294": 10, "295": 10, "296": 10, "297": 10, "3": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13], "30": [1, 7, 9], "300": 3, "31": 9, "3109997": 12, "314": 7, "315": 7, "316": 7, "317": [7, 10], "318": 7, "319": 7, "32": [1, 9, 11, 12], "320": 7, "322": 10, "32632": 10, "32737": 10, "328": 11, "329": 10, "33": [1, 9, 11], "330": 10, "331": 10, "333": 10, "334": 10, "335": 10, "338271": [5, 6, 7, 8, 10, 12], "34": [1, 6, 9, 10, 11], "35": [1, 6, 9], "354": 10, "3576": 10, "36": [1, 5, 6, 7, 8, 9, 10, 12, 13], "361": 10, "365": 10, "367": 7, "369": 7, "37": [1, 5, 6, 7, 8, 10, 12], "370": 7, "371": 7, "372": 7, "373": 7, "379283": 6, "379556": [5, 6, 7, 8, 10, 12], "379866": 6, "379877": 6, "379926": 6, "38": [1, 9], "382": 10, "384": 10, "386": 10, "388": [5, 9], "389789385": 6, "39": 1, "394": 7, "395": 7, "396": [7, 13], "397": 7, "4": [1, 5, 6, 9, 10, 11, 13], "40": [1, 7, 9, 10], "401": [7, 10], "402": 7, "403": 7, "404": 7, "405": 7, "41": 11, "410362": [5, 6, 7, 8, 10, 12], "411": 10, "41416": [5, 6, 7, 8, 10, 12], "42": 7, "427": 7, "428": 7, "429": 7, "43": [7, 10], "431": 7, "432": 7, "4326": [5, 6, 7, 8, 9, 10, 11, 12], "437890": [5, 6, 7, 8, 10, 12], "438": 10, "439": 9, "44": [9, 13], "444471": [5, 6, 7, 8, 10, 12], "4466": 7, "4467": 7, "4468": 7, "45": [6, 7, 14], "46": 7, "462": 10, "468": 9, "469": 10, "47": [7, 11], "48": [1, 7], "488": 13, "49": [1, 5, 6, 7, 8, 10, 12], "5": [1, 3, 5, 6, 9, 10, 11, 13], "50": [1, 9], "50gb": [11, 12], "51": [1, 9, 11], "52": [1, 5, 6, 7, 8, 10, 12], "522": 7, "523": 7, "525": 7, "53": [1, 6], "54": [1, 11], "540": 13, "541": 10, "547": 10, "548": 10, "55": 1, "552": 10, "56": 1, "563947": 9, "567": 10, "57": [1, 9], "58": [1, 9], "58999": [5, 6, 7, 8, 10, 12], "59": [1, 13], "590489": [5, 6, 7, 8, 10, 12], "6": [1, 5, 7, 8, 9, 10, 11, 13], "60": [1, 9], "61": [1, 7], "619": 10, "62": [1, 7], "624": 10, "629761": [5, 6, 7, 8, 10, 12], "6298593": 6, "63": [1, 7, 13], "6300405": 6, "6317677": 6, "632587599999999": 6, "6330643": 6, "634": 10, "64": [1, 7], "641": 10, "649": 10, "65": [1, 7], "650938": [5, 6, 7, 8, 10, 12], "66": [1, 7], "666": 7, "667": 7, "668": 7, "669": [7, 10], "67": [1, 7], "670": 7, "675509": [5, 6, 7, 8, 10, 12], "68": [1, 7, 11], "69": [1, 7], "69120": 14, "693": 7, "694": [7, 10], "695": 7, "7": [1, 6, 9, 10, 13], "70": [1, 7], "700": 12, "71": 1, "72": 1, "73": [1, 7, 11], "733": 7, "734": 9, "735": [7, 10], "736": 7, "737": 7, "739": 7, "74": [1, 7], "740": 7, "742371": [5, 6, 7, 8, 10, 12], "75": [1, 9], "76": [1, 7], "761161": [5, 6, 7, 8, 10, 12], "762": 10, "769836": 6, "77": [1, 11], "776": 10, "778": 6, "781": 11, "782": 10, "79": 1, "8": [1, 5, 6, 7, 8, 9, 10, 12, 13], "80": 1, "81": 1, "82": [1, 10], "83": 1, "8386618": 9, "84": 1, "841": 10, "844": 10, "85": 11, "858": 9, "86": 11, "872": 10, "878": 6, "89": 11, "895": 10, "898": 9, "8gb": [5, 6, 7, 8, 9, 10], "9": [1, 5, 9, 10, 12, 13], "90": 13, "904": 10, "913": 12, "926": 10, "927": 10, "93": 10, "935": 10, "9449463": 9, "946": 10, "948": 9, "95": 10, "954": 7, "955": 7, "956": 7, "957": 7, "958": 7, "96": 13, "97": 10, "974": 7, "976": 7, "977": 7, "97716061": 6, "97720617": 6, "97720623": 6, "97753107": 6, "978": 7, "979": 7, "98": 11, "99": 11, "AND": [6, 7, 8, 10, 11, 12], "AS": [5, 6, 7, 8, 10, 11, 12], "BY": [7, 8, 9, 10, 11, 12], "For": 11, "IF": [2, 5, 6, 7, 8, 9, 10, 11, 12], "In": [1, 5, 6, 7, 8, 9, 10, 11, 12], "NOT": 10, "No": 5, "ON": 10, "THEN": [9, 10], "The": [3, 7, 9], "There": 3, "These": [7, 8, 9, 10, 11, 12], "WITH": 10, "Will": 3, "_": 7, "__call__": 7, "__default_s3": [2, 6, 8, 9, 10, 11, 12], "__getitem__": 7, "__init__": 7, "__name__": 7, "__new__": 7, "_appli": 7, "_auto_downcast": 10, "_comm_manag": 7, "_dataset": 7, "_design": 7, "_geoarrow": 10, "_get_hover_data": 7, "_get_model": 7, "_get_object": 7, "_get_properti": 7, "_in_method": 7, "_init_glyph": 7, "_layer": 10, "_model": 7, "_obj": 7, "_osm_data": 5, "_per_el": 7, "_plot_id": 7, "_preprocess": 7, "_process": 7, "_process_lay": 7, "_propagate_dataset": 7, "_property_map": 7, "_ragged_arrai": 10, "_render": 7, "_render_ipywidget": 7, "_render_model": 7, "_render_panel": 7, "_repr_mimebundle_": 7, "_set_nam": 7, "_setup_autorang": 7, "_updat": 7, "_update_plot": 7, "_wrapper": 7, "abbreviated_except": 7, "abdul": 9, "abhimanyubarun": 9, "abo": 9, "aboulatsambo": 9, "about": [3, 14], "acceler": 14, "access": [1, 4, 5, 7, 9], "accessor": 7, "accessorpipelinemeta": 7, "action": 9, "activ": 14, "actual": 11, "aczel": 9, "add": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "adel": 9, "adjointlayout": 7, "adjust": [1, 2], "aerialwai": [1, 3], "aerowai": [1, 3], "affili": 14, "again": 1, "alert": 7, "all": [1, 5, 6, 7, 9], "allow": [4, 7, 11], "alpha": [7, 8, 11], "alreadi": [5, 6], "also": [9, 10], "alwai": 3, "amen": [1, 3], "an": [5, 6, 7, 8, 9, 11, 12], "analys": 9, "analysi": [1, 5, 6], "analyz": [7, 8, 11, 12], "ani": 7, "anoth": 7, "aoi": [5, 6, 7, 8, 10, 12], "apach": [2, 14], "apartmen": 6, "api": 9, "api_url": 9, "append": [1, 9], "append_column": 10, "appli": [7, 8, 11], "apply_continuous_cmap": [7, 8, 11], "apply_funct": 7, "approxim": [7, 11], "ar": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12], "area": [1, 3, 7, 8, 9, 10, 11, 12], "area_delta": [1, 3], "area_of_interest_fil": [5, 6, 7, 8, 10, 12], "arg": 7, "around": [3, 7, 8, 11, 12], "arrai": [9, 10], "asc": 12, "astyp": 7, "attach": 7, "attribut": [1, 5, 6, 9, 13], "auto_downcast": 10, "autorang": 7, "avail": [1, 5, 6, 7, 10], "axi": 7, "b": [7, 8, 10, 11, 12], "backend": 7, "barrier": [1, 3], "base": 7, "basearrowlay": 10, "basemap": [7, 8, 9, 10, 11, 12], "basemap_styl": [7, 8, 9, 10, 11, 12], "bazonzila": 9, "bbox": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "becaus": 10, "been": 9, "below": [1, 2], "benjamin": 14, "benni_test_heidelberg": 1, "beny": 9, "berlin": [5, 6, 7, 8, 10, 12, 14], "better": 7, "between": 3, "bigint": 3, "binari": 1, "bing": 3, "birken": 9, "blob": 3, "blues_9": 11, "bokeh": 7, "bokeh_them": 7, "bokehrender": 7, "bool": [7, 10], "boolean": [1, 2, 3, 6, 8, 9, 10, 11, 12], "both": [2, 9, 10], "bothmethod": 7, "bottleneck": [5, 6], "bound": [5, 6, 7, 11], "boundari": [1, 3], "bouyaosser": 9, "box": [5, 6, 7, 11], "brazil": 11, "bring": 1, "btr2": 9, "buffer": 14, "build": [1, 3, 5, 6, 14], "calcul": [11, 14], "call": [1, 5, 7, 10], "calvin": 9, "can": [1, 4, 5, 6, 7, 14], "cannot": 5, "cartobasemap": [7, 8, 9, 10, 11, 12], "case": [9, 10], "catalog": [2, 5, 7, 9], "cell": [3, 5, 10, 11], "central": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "centroid": [1, 3, 9], "changeset": [1, 4], "chart_data": 12, "chart_queri": [7, 8, 12], "check": [3, 5, 6], "child": 7, "choos": 4, "citi": 10, "cl": [7, 10], "class": 7, "class_": 7, "classmethod": 10, "client": [4, 5, 6], "clipped_geometri": 12, "clone": [7, 10], "cloud": 14, "cluster": 14, "code": [1, 2, 3, 13], "colab": 1, "color": [7, 8, 11, 12], "colorbrew": 11, "colormap": [7, 8, 11], "column": [1, 5, 6, 7, 8, 10, 11, 12], "column_nam": [5, 6], "column_stack": 12, "column_typ": [5, 6], "com": 5, "combin": [4, 7, 9, 10], "comm": 7, "common": [5, 6], "commun": 11, "compon": 7, "compositeoverlai": 7, "comput": [7, 8, 12, 14], "con": [2, 5, 6, 7, 8, 9, 10, 11, 12], "config": [5, 6, 7, 8, 9, 10, 11, 12], "configur": [5, 6, 7, 8, 9, 10, 11, 12], "connect": [5, 6, 7, 8, 9, 10, 11, 12, 14], "consist": 1, "construct_geometry_arrai": 10, "consumpt": 4, "contain": [5, 6, 9], "continu": 7, "contiou": [7, 8, 12], "contrib_typ": [1, 3], "contribut": [1, 7, 8, 9, 11, 12, 14], "contributions_germani": [1, 6, 7, 8, 10, 12], "contributions_germany_h3": 11, "convert": [7, 8, 9, 10, 11, 12], "coord": 10, "coordin": [5, 6], "coordinatedimens": 10, "copi": [2, 10], "core": 7, "correspond": 7, "count": [5, 6, 7, 8, 9, 11, 12], "count_star": [5, 6, 12], "countri": 14, "country_iso_a3": [1, 3], "cover": 14, "coverag": 14, "cpu": 10, "cr": 10, "craft": [1, 3], "creat": [5, 6, 7, 8, 9, 10, 11, 12], "credenti": 2, "crs_str": 10, "curdoc": 7, "current": [1, 14], "current_id": 7, "currentness_map": [7, 8], "curv": 7, "curveplot": 7, "cyclewai": 10, "cyclic_index": 7, "d": [7, 8, 11, 12, 14], "dai": [7, 8, 11, 12], "daili": 11, "dannyoung": 9, "darkmatt": [7, 8], "data": [1, 13], "databas": 1, "datafilterextens": [7, 8, 11, 12], "datafram": [7, 8, 9, 11, 12], "dataset": [4, 5, 6, 7, 9, 10], "date": [7, 8, 11, 12], "date_rang": 12, "date_slid": [7, 8, 11, 12], "date_trunc": [7, 8, 11], "datetim": [7, 8, 11, 12], "datetime_kei": 12, "dateutil": 12, "deep": 10, "deep_map": 7, "deeper": 1, "def": [7, 9, 10], "default": [1, 5, 6, 7, 9], "default_snapshot": 12, "defin": [5, 6, 7, 8, 9, 10, 11, 12], "definit": [7, 8, 9, 10, 11, 12], "deku": 9, "delet": [3, 5, 6, 13], "dellington_": 9, "dellington_d": 9, "delta": [7, 8, 11], "demonstr": [7, 8, 9, 10, 11, 12], "desc": [9, 10], "describ": [5, 6], "descript": [3, 5, 6, 7, 8, 11, 12, 13], "desir": [7, 8, 11, 12], "detail": [1, 3, 5, 6, 7, 9], "determin": 3, "develop": 14, "df": [5, 6, 7, 8, 9, 10, 11, 12], "df_attr": 10, "dict": 7, "dim": 10, "dimens": 7, "dimension_valu": 7, "dimensionedplot": 7, "directional_link": [7, 8, 11, 12], "directori": 5, "disabl": [7, 8, 11, 12], "displai": [1, 10], "display_formatt": 7, "display_hook": 7, "distinct": 11, "dive": 1, "divin": 9, "do": 7, "doc": [3, 7], "document": 7, "don": 10, "doubl": [1, 3, 5, 10], "down": [7, 8, 9, 10, 11, 12], "download": [4, 7, 8, 10, 11, 12, 14], "download_tim": [5, 6, 7, 8, 9, 10, 11, 12], "drag": [5, 6], "drawn": 7, "driver": [5, 6], "drop": [2, 5, 6, 7, 8, 9, 10, 11, 12], "dt_type": 7, "dtype": 7, "ducdkb": [7, 8, 11, 12], "duckdb": [1, 4, 9, 14], "dval": 7, "dynam": [7, 14], "e": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "each": [5, 6, 7], "easier": 4, "easili": 4, "edit": [5, 6, 7, 8, 9], "editor": [1, 3, 9], "el": 7, "eldabless": 9, "element": [3, 4, 7], "element_displai": 7, "elementplot": 7, "elif": 7, "elodienix": 9, "els": [7, 9, 10], "emb": 7, "emerg": [1, 3], "empti": 7, "enable_object_cach": [5, 6, 9, 11], "end": [7, 8, 9, 10, 11], "end_timestamp": 11, "endpoint": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "entir": 11, "entri": 9, "enumer": 12, "environ": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "epoch_m": [7, 8, 11, 12], "epsg": [5, 6, 7, 8, 9, 10, 11, 12], "epsg_cod": 10, "erick": 9, "errno": 5, "error": 5, "espg_cod": 10, "eu": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "exact": [5, 7], "except": 7, "exception_messag": 5, "exception_typ": 5, "excit": 14, "exclud": 7, "exist": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "expect": 1, "explain": 1, "explor": [2, 7, 8, 11, 12], "export": [5, 6], "extens": [7, 8, 10, 11, 12], "extension_typ": 10, "extra": [5, 6], "extract": 9, "extrud": 11, "f": [2, 5, 6, 7, 8, 9, 10, 11, 12], "factor": [5, 6], "factori": 7, "fail": 5, "fals": [7, 8, 11, 12], "fast": 7, "favorit": 4, "featur": [5, 6], "few": [5, 6], "field": 10, "field_nam": 10, "fig": 7, "file": [4, 5, 6, 7, 10], "filter": [6, 7, 8, 10, 11, 12, 14], "filter_rang": [7, 8, 11, 12], "filter_s": [7, 8, 11, 12], "filter_valu": 12, "find": [1, 7, 14], "first": [7, 9], "fitler": 5, "float": 12, "fmt": 7, "fn": 7, "follow": [3, 5, 6], "footwai": 10, "format": [3, 4], "formatt": 7, "four": [5, 6], "fr": 9, "franci": 9, "freq": 12, "from": [1, 4, 7, 8, 9, 10, 11, 12, 14], "from_geopanda": [7, 8, 9, 10, 11, 12], "from_panda": 10, "from_wkt": [5, 6, 7, 8, 9, 10, 11, 12], "full": [4, 14], "fun": [7, 8, 11, 12], "further": [7, 8, 9, 10, 11, 12], "furthermor": [5, 6, 9, 11], "g": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "gdal": 5, "gdc_christi": 9, "gdf": [5, 6, 7, 8, 9, 10, 11, 12], "geo": 14, "geo_sort": [1, 5, 6, 7, 9], "geo_sort_ext": [6, 8, 10, 11, 12], "geodata": [7, 8, 9, 10, 11, 12], "geodatafram": [5, 6, 7, 8, 9, 10, 11, 12], "geograph": 4, "geoinform": 14, "geojson": [5, 6, 7, 8, 10, 12], "geolog": [1, 3], "geom": [5, 6, 7, 8, 10, 12], "geom_arr": 10, "geom_typ": [9, 10], "geometri": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "geometry_typ": [1, 3, 5, 6, 7, 8, 10, 12, 13], "geometry_valid": [1, 3], "geometrycollect": [3, 13], "geometrytyp": 10, "geopackag": 14, "geopanda": [5, 6, 7, 8, 9, 10, 11, 12], "geopandas_interop": 10, "geopandas_to_geoarrow": 10, "georg": 9, "geoseri": [5, 6, 7, 8, 9, 10, 11, 12], "geospati": 3, "germani": 11, "get": 4, "get_color": [10, 12], "get_current_usernam": 9, "get_data": 7, "get_elev": 11, "get_fill_color": [7, 8, 9, 11], "get_filter_valu": [7, 8, 11, 12], "get_line_color": 9, "get_line_width": 9, "get_plot": 7, "get_real_method": 7, "get_root": 7, "get_server_comm": 7, "get_width": 10, "getattr": 7, "ggmbh": 14, "gib": 13, "giscienc": 5, "git_repo": [7, 10], "githubusercont": 5, "given": 7, "global": [3, 10], "global_wkt_smal": 10, "globalturtl": 9, "gloir": 9, "gmagnancha": 9, "go": [2, 5, 6, 9], "googl": 1, "gpd": [5, 6, 7, 8, 9, 10, 11, 12], "gpkg": [5, 6], "gpu": 12, "group": [1, 7, 8, 9, 10, 11, 12], "h3": [3, 11], "h3_cell_to_boundary_wkt": 11, "h3_r5": [1, 3, 11], "handl": 7, "hasattr": 7, "hash": 9, "hashtag": [1, 3, 9], "have": [1, 3, 5, 6, 7, 8, 9, 11, 12], "haven": 1, "healthcar": [1, 3], "heidelberg": [5, 6, 7, 8, 10, 12, 14], "heidelberg_osm_data": 6, "height": 11, "heigit": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "here": [1, 5, 6, 7, 8, 9, 10, 11, 12], "herfort": 14, "hierarch": 3, "hierarchi": 7, "highwai": [1, 3, 10, 14], "highway_valu": 10, "histor": [1, 3, 5, 6], "histori": [3, 9, 11, 12, 13, 14], "hive_partit": [6, 8, 10, 11, 12], "holoview": 7, "hook": 7, "host": 14, "hot": 14, "hot_tasking_manag": 9, "hot_tm_lay": 9, "hot_tm_parquet_data_path": 9, "hot_tm_project_id": 9, "hotosm": 9, "how": [7, 8, 9, 10, 11, 12, 14], "http": [1, 2, 5, 7, 9], "i": [4, 5, 6, 7, 8, 9, 10, 11, 12], "ibrahim": 9, "iceberg": [2, 5, 7, 9, 14], "iceberg_t": 1, "icebergt": [5, 7, 9], "id": [1, 3, 5, 7, 9, 10, 11], "id_edit": 9, "ignor": 10, "imageri": 10, "impl": [1, 5, 7, 9], "import": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "in_method": 7, "includ": 7, "include_z": 10, "index": [3, 7, 8, 11], "indexerror": 7, "info": 9, "inform": [4, 5, 6], "init_kei": 7, "init_op": 7, "initial_filter_rang": 12, "initialize_plot": 7, "inner_kwarg": 7, "input": 6, "insight": [5, 7, 10], "inspect": [1, 5, 6, 9], "inst": 7, "instal": [1, 5, 11], "install_extens": [5, 6, 7, 8, 9, 10, 11, 12], "instanc": 7, "instanti": 10, "instead": 11, "institut": 14, "int": [1, 7, 8, 11], "int32": [5, 6], "int64": [5, 6, 12], "int8": 12, "integ": [3, 5, 6], "interact": [7, 8, 11, 12], "interest": [7, 8, 10, 11, 12], "internet": [5, 6], "interpol": 7, "interpolate_curv": 7, "interpolate_func": 7, "interv": [11, 12], "invalid": [3, 13], "invalidgeometri": [3, 13], "investig": 9, "io": [1, 5, 7, 9], "ioexcept": 5, "ip": 7, "ipython": 7, "ipywidget": [7, 8, 11, 12], "is_datetim": 7, "isinst": [7, 9], "item": 7, "jaco452": 9, "jimerveil": 9, "join": [10, 12], "josm": 9, "josm_edit": 9, "json": 9, "jupyt": [0, 5, 6], "just": [5, 6], "k": 7, "kd": 7, "kei": [1, 5, 6, 7, 9], "kenaurd": 9, "kenya": 11, "key_id": [2, 6, 8, 9, 10, 11, 12], "kib": 13, "km\u00b2": 3, "kognoko": 9, "kwarg": [7, 10], "labelleddata": 7, "lambda": [7, 8, 11, 12], "landus": [1, 3], "languag": 4, "laptop": [5, 6], "larg": 4, "last": [5, 7, 8, 10], "later": [5, 6], "latest": [3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "latitud": [9, 10, 11, 12], "layer": [7, 8, 9, 10, 11, 12], "layer_extens": [7, 8, 11, 12], "layout": [7, 8, 11, 12], "leaderboard": 9, "left": 10, "leisur": [1, 3], "len": [7, 8, 9, 11], "length": [1, 3], "length_delta": [1, 3], "length_km": [10, 12], "let": [1, 9], "level": [1, 3, 10], "lib": [7, 10], "librari": [1, 11], "like": 1, "limit": [5, 6, 7, 10], "line": [1, 5, 10, 12], "linestr": [3, 5, 6, 9, 10, 12, 13], "link": [7, 8, 9], "link_dataset": 7, "link_input": 7, "list": [1, 9, 10], "list_contain": 9, "list_namespac": 1, "list_tabl": 1, "live": 7, "living_street": 10, "ll": 2, "load": 11, "load_extens": [5, 6, 7, 8, 9, 10, 11, 12], "load_tabl": [1, 5, 7, 9], "local": 7, "locat": [3, 5, 6, 7, 8, 9, 10, 11, 12], "lonboard": [7, 8, 9, 10, 11, 12], "long": 1, "longitud": [9, 10, 11, 12], "m": [3, 9, 12], "made": 9, "main": 5, "mainli": 11, "major": [5, 6], "man_mad": [1, 3], "manag": [5, 6, 14], "mannheim": [5, 6, 7, 8, 10, 12], "map": [0, 1, 5, 6, 9, 10, 14], "map_featur": [1, 3], "map_fn": 7, "map_queri": [7, 8, 10, 12], "mapillari": [4, 14], "mapillary_coverag": 10, "mapillary_data": 10, "mapillary_lay": 10, "mapillary_map": 10, "mapillary_parquet_data_path": 10, "mapillary_sequ": 10, "mapper": 9, "mariannamuk": 9, "mariannamukulunga": 9, "maryamarab": 9, "match": 10, "matching_mapillary_sequ": 10, "materi": 0, "mathematikon": 14, "matplotlib": [7, 8], "matter": 11, "max": [11, 12], "max_fram": 7, "max_memori": [5, 6, 7, 8, 9, 10, 11, 12], "max_timestamp": [5, 6, 12], "max_valid_from": [7, 8, 11, 12], "max_valid_to": 12, "max_valu": 11, "mbani": 9, "media": 9, "medodzi": 9, "member": [1, 3], "menttor": 9, "mercy14846": 9, "metadata": [1, 7, 10], "method": 7, "method_fn": 7, "mib": 13, "middle_timestamp": 12, "militari": [1, 3], "million": 3, "mimebundl": 7, "mimebundleformatt": 7, "min": 12, "min_timestamp": [5, 6, 12], "min_valid_from": [7, 8, 11, 12], "min_valu": 11, "minio": [1, 5, 6, 7, 8, 9, 10, 11, 12, 14], "mlingi": 9, "mode": 7, "model": 7, "month": [7, 8, 12], "more": [3, 5, 6, 7], "most": [5, 6, 7, 9, 10], "motorwai": 10, "motorway_link": 10, "mountou": 9, "move": [7, 8, 11, 12], "much": 9, "multi": 9, "multilinestr": 12, "multipolygon": [3, 13], "my_user_access_kei": 2, "my_user_secret_kei": 2, "m\u00b2": 3, "n_edit": [7, 8, 9], "n_user": 11, "nairobi": [5, 6, 7, 8, 10, 12], "name": [1, 3, 5, 7, 9, 10, 13], "namespac": [1, 5, 6, 7, 9], "nan": 11, "nan_to_num": 11, "natur": [1, 3], "nayar": 9, "ndarrai": 10, "ndlayout": 7, "need": [2, 7, 9, 10, 14], "ness": [7, 8], "network": 14, "new": [2, 14], "new_obj": 7, "next": [1, 2], "nkpa": 9, "nkpagneer": 9, "none": [7, 10], "normal": [7, 8, 11], "not_covered_length_km": 10, "not_covered_osm_data": 10, "not_covered_osm_length": 10, "note": 10, "notebook": [0, 5, 6, 7, 8, 9, 10, 11, 12], "notebook_context": 7, "notoncebut2x": 9, "now": [1, 2], "np": [7, 10, 11, 12], "null": [5, 6, 7, 8, 10, 12], "number": [5, 6, 11], "numpi": [11, 12], "nzaht": 9, "o": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "obj": 7, "object": [1, 6, 7, 8, 9, 10, 11, 12, 14], "object_": 10, "offic": [1, 3], "offset": 10, "ohsom": [1, 7, 8, 9, 10, 11, 12], "okama": 9, "old_object": 7, "onc": 7, "onli": [1, 10], "open": 5, "openstreetmap": [4, 9], "oper": [1, 7], "optim": [4, 5, 6], "option": [1, 5, 6, 7, 8, 10, 11, 12], "option_st": 7, "optmiz": 7, "order": [1, 7, 8, 9, 10, 11, 12], "org": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "organ": 1, "osm": [4, 5, 6, 14], "osm_data": [5, 6, 7, 8, 10, 12], "osm_data_df": 10, "osm_data_gdf": 10, "osm_df": 9, "osm_evolution_map": 12, "osm_gdf": 9, "osm_id": [1, 3, 5, 6, 9, 10, 12], "osm_lay": 10, "osm_lines_lay": 9, "osm_map": [9, 10], "osm_parquet_data_path": 10, "osm_points_lay": 9, "osm_polygons_lay": 9, "osm_stat": 12, "osm_typ": [1, 3], "osm_vers": [1, 3, 5, 6, 9, 12], "other": [1, 4], "our": [5, 6, 7, 9, 14], "out": [1, 5, 6, 7, 10], "output": 7, "output_filenam": [5, 6], "output_typ": 7, "outputset": 7, "over": 14, "overal": [5, 6], "overflow": 7, "overlai": 10, "overlaid": 7, "overtur": 4, "overview": [5, 6], "overview_map": 9, "own": [4, 14], "p": 7, "pa": 10, "packag": [7, 10], "page": [1, 5, 6], "palett": [7, 8, 11], "panda": [11, 12], "pane": 7, "panel": 7, "panladawuda": 9, "param": [5, 6, 7, 8, 9, 10, 11, 12], "parameter": 7, "parameterizedfunct": 7, "parent": 7, "parquet": [4, 6, 8, 10, 11, 12, 13], "parquet_data_path": [6, 8, 11, 12], "part": [5, 6, 7, 8, 10, 11, 12], "partit": [1, 14], "password": [1, 5, 6, 7, 8, 9, 10, 11, 12], "path": [2, 6, 8, 9, 10, 11, 12], "pathlay": [9, 10, 12], "pathlayerkwarg": 10, "pd": [11, 12], "pdf": 7, "pedestrian": 10, "per": [10, 11], "per_el": 7, "perei": 9, "perform": [5, 6, 7], "peter": 9, "php": 9, "pip": [1, 5], "pipelin": 7, "pipelined_cal": 7, "pipelined_fn": 7, "pipelinemeta": 7, "pitch": 11, "pl": [7, 8, 12], "place": [1, 3], "plain": 7, "png": 7, "point": [3, 5, 6, 9, 13], "polygon": [3, 5, 6, 7, 8, 9, 11, 13], "polygonlay": [9, 11], "positron": [9, 10, 11, 12], "postgr": 1, "potenti": [3, 5, 6, 7], "power": [1, 3], "pprint": 7, "pprint_displai": 7, "pre": 7, "precomput": 4, "preprocess": 7, "preserve_index": 10, "preview": 14, "primari": 10, "primary_link": 10, "print": [5, 6, 7, 8, 9, 10, 11, 12], "print_method": 7, "process": [6, 7, 13, 14], "processing_tim": [5, 6, 7], "program": 4, "project": 14, "project_id": 9, "prop": 7, "provid": 14, "pts_to_midstep": 7, "public_transport": [1, 3], "py": [1, 5, 7, 9, 10], "pyarrow": [1, 5, 7, 9, 10], "pyarrowfileio": [1, 5, 7, 9], "pyiceberg": [9, 14], "python": 1, "python3": [7, 10], "qgi": 14, "quadkei": 3, "quadkey_z10": [1, 3], "queri": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "r237497": 9, "rabiatu": 9, "railwai": [1, 3], "rais": 10, "ram": 10, "rang": [7, 8, 11, 12], "rare": [5, 6], "raw": 5, "raw_osm_data": [5, 7, 9], "raw_output": 7, "read_parquet": [6, 8, 9, 10, 11, 12], "readi": 2, "recent": [5, 7, 10], "reduc": [5, 6], "ref": 7, "region": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "regist": 7, "registri": [7, 10], "relativedelta": 12, "render": 7, "render_model": 7, "replac": [7, 8, 11, 12], "request": 9, "rerendererror": 7, "residenti": 10, "resolut": 3, "resolv": 7, "resourc": 4, "respons": [9, 12], "rest": [1, 5, 7, 9], "restcatalog": [1, 5, 7, 9], "result": [5, 6, 7], "ret": 7, "return": [7, 8, 9, 10, 11], "road": 14, "road_length": 12, "role": [1, 3], "root": 7, "round": [5, 6, 7, 8, 9, 10, 11, 12], "rout": [1, 3], "row": [5, 10], "row_filt": [5, 7, 9], "row_numb": 12, "ru": 9, "run": [1, 14], "s3": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_access_key_id": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_password": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_secret_access_kei": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_user": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3a": [6, 8, 9, 10, 11, 12], "s3f": [1, 5], "salli": 9, "satur": 12, "save": 14, "sbribri": 9, "scan": [7, 9, 14], "scatterplotlay": 9, "schema": 1, "schema_id": 1, "sec": [5, 6, 7, 8, 9, 10, 11, 12], "second": [5, 7], "secondari": 10, "secondary_link": 10, "secret": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "see": [7, 8, 9, 10, 11, 12], "select": [5, 6, 7, 8, 9, 10, 11, 12], "selected_field": [5, 7, 9], "selected_region": [5, 6, 7, 8, 10, 11, 12], "selectionrangeslid": [7, 8], "selectionslid": [11, 12], "self": [7, 10], "self_or_cl": 7, "sequenc": 14, "sequenti": 11, "server": [5, 6], "servic": 10, "set": [1, 5, 6, 7, 8, 9, 10, 11, 12], "set_cr": [5, 6, 7, 8, 9, 10, 11, 12], "setattr": 7, "shape": 10, "shapely_arr": 10, "share": 14, "shop": [1, 3], "should": [5, 6, 14], "show": [2, 5, 6, 8, 9, 10, 11, 12, 14], "singl": [1, 6], "site": [7, 10], "size": [3, 5, 6, 7], "slider": [7, 8, 11, 12], "snapshot": [1, 12], "snapshot_index": 12, "sneak": 14, "solidpolygonlay": [7, 8], "some": 1, "sort": [1, 14], "sort_valu": 9, "sotm": [5, 7, 10], "sotm2024": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "sotm24": [6, 8, 9, 10, 11, 12], "sou": 6, "sourc": 7, "spatial": [5, 6, 7, 8, 9, 10, 11, 12], "spec": 7, "special": 4, "sport": [1, 3], "sql": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "sqlite": [1, 5], "st_astext": [10, 12], "st_buffer": 10, "st_geometrytyp": 12, "st_geomfromtext": [5, 6, 7, 8, 10, 12], "st_intersect": [5, 6, 7, 8, 10, 12], "st_length_spheroid": [10, 12], "st_read": [5, 6, 7, 8, 10, 12], "st_transform": 10, "start_tim": [5, 6, 7, 8, 9, 10, 11, 12], "start_timestamp": 11, "state": [0, 7], "statist": 4, "statu": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "status_cod": 9, "step": [1, 2, 7, 8, 9, 10, 11, 12], "storag": [6, 8, 9, 10, 11, 12], "store": [1, 7, 14], "str": 14, "stream": 7, "street": 10, "strftime": [7, 8, 11, 12], "string": 1, "struct": [1, 3, 5], "structur": [1, 5, 6, 14], "style": [7, 8, 11, 12], "style_el": 7, "success": [2, 6, 8, 9, 10, 11, 12], "sulemana": 9, "sum": [9, 10, 12], "sungumu": 9, "super": [7, 10], "suppli": 7, "support": 10, "susan27": 9, "system": 3, "t": [1, 10], "tabl": [1, 2, 6, 7, 8, 9, 10, 11, 12, 14], "tablenam": [5, 7, 9], "tag": [1, 3, 5, 6, 7, 8, 9, 10, 12], "tags_befor": [1, 3, 9], "tamba": 9, "task": 14, "teach": 14, "team": 14, "technologi": 14, "telecom": [1, 3], "tertiari": 10, "tertiary_link": 10, "text": 7, "textual": 9, "them": 2, "theme": 7, "thi": [1, 3, 7, 8, 9, 10, 11, 12, 14], "thing": 1, "think": 1, "thread": [5, 6, 7, 8, 9, 10, 11, 12], "through": [5, 6], "tile": 3, "time": [5, 6, 7, 8, 9, 10, 11, 14], "time_interv": 11, "timedelta": [7, 8, 11], "timestamp": [1, 3, 5, 6, 7, 8, 11, 12], "to_duckdb": [5, 7, 9], "to_fil": [5, 6], "to_json": 10, "to_numpi": 11, "to_ragged_arrai": 10, "todo": 7, "togeth": 1, "tolist": 12, "took": [5, 6, 7, 8, 9, 10, 11, 12], "top": [10, 12], "top_mapp": 9, "total_length_km": 10, "total_osm_length": 10, "total_stat": 10, "traceback": [5, 7, 10], "track": 10, "traitlet": [7, 8, 11, 12], "transform": [11, 12], "travers": 7, "trino": 4, "true": [2, 5, 6, 7, 8, 9, 10, 11, 12], "trunk": 10, "trunk_link": 10, "try": 7, "tungbani": 9, "tupl": 7, "two": [9, 10, 11], "typ": 10, "type": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12], "u": 11, "ubigint": 3, "unclassifi": 10, "uncovered_stat": 10, "understand": 14, "univers": 14, "unpack": 10, "up": [1, 7, 8], "updat": 7, "uri": [1, 5, 7, 9], "url_styl": [2, 6, 8, 9, 10, 11, 12], "us": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14], "use_ssl": [2, 6, 8, 9, 10, 11, 12], "user": [1, 5, 6, 7, 8, 10, 12, 14], "user_activity_map": 11, "user_activity_styl": 11, "user_contribut": 11, "user_id": [1, 3, 5, 6, 9, 11], "user_ids_list": 9, "user_info": 9, "user_names_list": 9, "user_stats_df": 9, "usernam": 9, "usual": [5, 6], "v": [7, 11, 12], "val_arrai": 7, "valid_from": [1, 3, 5, 6, 7, 8, 9, 11, 12], "valid_from_styl": [7, 8], "valid_to": [1, 3, 9, 12], "valu": [3, 5, 6, 7, 8, 9, 11, 12, 13], "value_step": 7, "valueerror": 10, "varch": [5, 6], "varchar": [3, 5, 6, 10], "vari": 3, "venv": [7, 10], "via": [5, 6, 9, 14], "view_stat": [9, 10, 11, 12], "viewabl": 7, "viewableel": 7, "vijayb2345": 9, "viridis_20": [7, 8], "visual": [7, 8, 11, 12], "wai": [4, 6, 7, 14], "want": [5, 6, 9, 10], "water": [1, 3], "waterwai": [1, 3], "we": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14], "websit": 2, "when": [1, 7, 9, 10], "where": [1, 5, 6, 7, 8, 9, 10, 11, 12], "which": [1, 5, 6, 10], "who": 9, "whosthat": 9, "why": 14, "widget": [7, 8], "widget_mod": 7, "width": [7, 8, 11, 12], "width_min_pixel": 12, "wisdom": 9, "without": [10, 14], "wkt": 3, "work": 14, "workshop": [5, 7, 10], "would": [5, 6], "wrap": 7, "wrapper": 7, "write": 4, "wun": 9, "wunpini": 9, "www": 9, "x": [1, 3, 7, 8, 9, 11, 12], "xavier": 9, "xaxi": 12, "xidx": 7, "xmax": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "xmin": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "xy": 10, "xzcode": [1, 3, 13], "y": [1, 3, 7, 8, 9, 11, 12], "ye": [5, 6], "yet": [1, 10], "yidx": 7, "ymax": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "ymin": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "you": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "your": [1, 2, 5, 6, 14], "ziggyentumi": 9, "zip": 7, "zoom": [3, 9, 10, 11, 12]}, "titles": ["sotm-2024-ohsome-data-insights-workshop", "Connect to Apache Iceberg", "Connect to MinIO Object Store", "Data Structure", "Why should you be excited about ohsome-data-insights?", "DuckDB + PyIceberg: Data Extraction from geo-sorted ohsome contributions", "DuckDB: Data Extraction from geo-sorted ohsome contributions", "DuckDB + PyIceberg: Currentness of Buildings", "DuckDB: Currentness of Buildings", "HOT Tasking Manager project analysis", "DuckDB: Mapillary Coverage Analysis", "DuckDB: Country user activity map", "DuckDB: Development of highways over time", "Partitioning and Sorting", "Welcome to ohsome-data-insights Workshop @ SOTM 2024"], "titleterms": {"1st": 13, "2024": [0, 14], "2nd": 13, "In": 2, "about": [4, 9], "access": 2, "account": 2, "activ": 11, "advanc": 14, "an": 1, "analysi": [7, 8, 9, 10, 11, 12, 14], "apach": 1, "attribut": [3, 4], "background": 14, "buffer": 10, "build": [7, 8], "calcul": 10, "catalog": 1, "changeset": [3, 9], "chart": [7, 8, 12], "connect": [1, 2], "contact": 14, "contribut": [5, 6, 13], "countri": 11, "cover": 10, "coverag": 10, "creat": 2, "current": [7, 8], "data": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14], "develop": 12, "displai": [7, 8, 9, 11, 12], "download": [5, 6, 9], "duckdb": [2, 5, 6, 7, 8, 10, 11, 12], "enrich": 4, "evolut": 12, "excit": 4, "extract": [4, 5, 6, 14], "fast": 4, "featur": [3, 7, 8], "filter": [5, 9], "find": 10, "fit": 4, "flexibl": 4, "from": [5, 6], "gener": 3, "geo": [5, 6, 13], "geograph": 3, "geopackag": [5, 6], "get": [1, 5, 6, 7, 8, 9, 10, 11, 12, 14], "highwai": 12, "hot": 9, "hvplot": [7, 8], "i": 1, "iceberg": 1, "inform": 9, "input": [7, 8, 9, 10, 11, 12], "insight": [0, 4, 14], "integr": [4, 14], "kei": 2, "level": 13, "log": 2, "manag": 9, "map": [3, 7, 8, 11, 12], "mapillari": 10, "matter": [5, 6], "minio": 2, "network": 10, "object": 2, "ohsom": [0, 4, 5, 6, 13, 14], "onli": [5, 6], "osm": [2, 3, 7, 8, 9, 10, 11, 12], "over": 12, "overview": 1, "paramet": [7, 8, 9, 10, 11, 12], "partit": 13, "plot": [7, 8, 12], "polar": [7, 8], "prepar": [7, 8, 9, 10, 11, 12], "process": 5, "project": 9, "pyiceberg": [1, 5, 7], "qgi": [5, 6], "relat": 3, "road": 10, "save": [5, 6], "scan": 5, "sequenc": 10, "share": 10, "should": 4, "simpl": 14, "sort": [5, 6, 13], "sotm": [0, 14], "special": 3, "speed": [5, 6], "start": [5, 6, 7, 8, 9, 10, 11, 12, 14], "statist": 9, "step": [5, 6], "store": 2, "structur": 3, "style": 4, "tabl": 5, "task": 9, "thi": [5, 6], "time": [12, 13], "us": 9, "user": [9, 11], "via": [1, 2], "wai": 10, "welcom": 14, "what": 1, "why": 4, "work": [5, 6], "workshop": [0, 14], "you": 4, "your": [4, 7, 8, 9, 10, 11, 12]}}) \ No newline at end of file +Search.setIndex({"alltitles": {"1st level partition": [[13, "st-level-partition"]], "2nd level partition": [[13, "nd-level-partition"]], "Advanced Data Analysis": [[14, null]], "Background": [[14, null]], "Calculate share of road network covered by Mapillary": [[10, "calculate-share-of-road-network-covered-by-mapillary"]], "Connect to Apache Iceberg": [[1, null]], "Connect to Apache Iceberg Catalog via PyIceberg": [[1, "connect-to-apache-iceberg-catalog-via-pyiceberg"]], "Connect to MinIO Object Store": [[2, null]], "Connect to MinIO via DuckDB": [[2, "connect-to-minio-via-duckdb"]], "Contact": [[14, "contact"]], "Create Access Key": [[2, "create-access-key"]], "Currentness of Buildings": [[7, null]], "Data Extraction": [[14, null]], "Data Integration": [[14, null]], "Data Structure": [[3, null]], "Data integration": [[4, "data-integration"]], "Display OSM highway evolution on map": [[12, "display-osm-highway-evolution-on-map"]], "Display OSM user activity on map": [[11, "display-osm-user-activity-on-map"]], "Display OSM user statistics": [[9, "display-osm-user-statistics"]], "Display currentness of OSM features on map": [[7, "display-currentness-of-osm-features-on-map"], [8, "display-currentness-of-osm-features-on-map"]], "Download data OSM Data": [[9, "download-data-osm-data"]], "Download data with PyIceberg table scan": [[5, "download-data-with-pyiceberg-table-scan"]], "Download latest OSM data as GeoPackage": [[5, null]], "Download speed matters only in this step.": [[5, null], [6, null]], "Download with DuckDB": [[6, "download-with-duckdb"]], "DuckDB: Currentness of Buildings": [[8, null]], "DuckDB: Data Extraction from geo-sorted ohsome contributions": [[6, null]], "Enriched attributes": [[4, "enriched-attributes"]], "Fast data extraction": [[4, "fast-data-extraction"]], "Filter and process data with DuckDB": [[5, "filter-and-process-data-with-duckdb"]], "Filter data using OSM changeset information": [[9, "filter-data-using-osm-changeset-information"]], "Find OSM ways not covered by (buffered) Mapillary sequence": [[10, "find-osm-ways-not-covered-by-buffered-mapillary-sequence"]], "Fits your style": [[4, "fits-your-style"]], "General OSM Attributes": [[3, "general-osm-attributes"]], "Geo-sorted ohsome contributions": [[13, "geo-sorted-ohsome-contributions"]], "Geographic Attributes": [[3, "geographic-attributes"]], "Get Information about HOT Tasking Manager project": [[9, "get-information-about-hot-tasking-manager-project"]], "Get Mapillary Data": [[10, "get-mapillary-data"]], "Get OSM data": [[10, "get-osm-data"]], "Get an overview": [[1, "get-an-overview"]], "Get the Data": [[7, "get-the-data"], [8, "get-the-data"], [11, "get-the-data"], [12, "get-the-data"]], "Getting Started": [[14, null]], "Getting started": [[5, "getting-started"], [6, "getting-started"], [7, "getting-started"], [8, "getting-started"], [9, "getting-started"], [10, "getting-started"], [11, "getting-started"], [12, "getting-started"]], "HOT Tasking Manager project analysis": [[9, null]], "Log-In with OSM Account": [[2, "log-in-with-osm-account"]], "Mapillary Coverage Analysis": [[10, null]], "OSM Changeset Attributes": [[3, "osm-changeset-attributes"]], "Partitioning and Sorting": [[13, null]], "Partitions": [[13, "partitions"]], "Plot chart": [[12, "plot-chart"]], "Plot currentness chart with polars and hvplot": [[7, "plot-currentness-chart-with-polars-and-hvplot"], [8, "plot-currentness-chart-with-polars-and-hvplot"]], "Prepare the input parameters for your analysis": [[7, "prepare-the-input-parameters-for-your-analysis"], [8, "prepare-the-input-parameters-for-your-analysis"], [9, "prepare-the-input-parameters-for-your-analysis"], [10, "prepare-the-input-parameters-for-your-analysis"], [11, "prepare-the-input-parameters-for-your-analysis"], [12, "prepare-the-input-parameters-for-your-analysis"]], "Road Network Evolution": [[12, null]], "Save data as GeoPackage": [[5, "save-data-as-geopackage"], [6, "save-data-as-geopackage"]], "Simple Data Analysis": [[14, null]], "Sorting": [[13, "sorting"], [13, "id1"]], "Special Attributes for OSM Map Features": [[3, "special-attributes-for-osm-map-features"]], "Special Attributes for OSM Relations": [[3, "special-attributes-for-osm-relations"]], "Time-sorted ohsome contributions": [[13, "time-sorted-ohsome-contributions"]], "User activity map": [[11, null]], "Welcome to ohsome-data-insights Workshop @ SOTM 2024": [[14, null]], "What is Apache Iceberg?": [[1, "what-is-apache-iceberg"]], "Why should you be excited about ohsome-data-insights?": [[4, null]], "Work with the data in QGIS": [[5, "work-with-the-data-in-qgis"], [6, "work-with-the-data-in-qgis"]], "flexibility": [[4, "flexibility"]], "sotm-2024-ohsome-data-insights-workshop": [[0, null]]}, "docnames": ["README", "book/00_Iceberg_Catalog", "book/00_MinIO_Object_Store", "book/00_data_structure", "book/00_motivation", "book/01a_Data_Extraction_DuckDB_PyIceberg", "book/01b_Data_Extraction_DuckDB_only", "book/02a_buildings_currentness_DuckDB_PyIceberg", "book/02b_buildings_currentness_DuckDB_only", "book/03_hot_tm_project_analysis", "book/03_mapillary_data_analysis", "book/04_Country_User_Activity_DuckDB_only", "book/04_highways_timeline_DuckDB_only", "book/05_partitioning_and_sorting", "intro"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9}, "filenames": ["README.md", "book/00_Iceberg_Catalog.ipynb", "book/00_MinIO_Object_Store.ipynb", "book/00_data_structure.md", "book/00_motivation.md", "book/01a_Data_Extraction_DuckDB_PyIceberg.ipynb", "book/01b_Data_Extraction_DuckDB_only.ipynb", "book/02a_buildings_currentness_DuckDB_PyIceberg.ipynb", "book/02b_buildings_currentness_DuckDB_only.ipynb", "book/03_hot_tm_project_analysis.ipynb", "book/03_mapillary_data_analysis.ipynb", "book/04_Country_User_Activity_DuckDB_only.ipynb", "book/04_highways_timeline_DuckDB_only.ipynb", "book/05_partitioning_and_sorting.md", "intro.md"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [1, 9], "0": [1, 3, 5, 7, 8, 9, 10, 11, 12, 13], "00": [5, 6, 11], "01": [5, 6, 11, 12], "01t00": [5, 6, 11], "02": [5, 11], "04": [5, 10], "048": 10, "05": 6, "057": 10, "06": [5, 6], "07": 5, "071": 10, "08": 5, "085": 10, "088345": [5, 6, 7, 8, 10, 12], "09": [5, 6], "0x754e04508110": 7, "0x767dfa7088f0": 12, "0x7cdde89582c0": 8, "0x7da1d41f6720": 11, "1": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "10": [1, 3, 5, 6, 9], "1000": [7, 8, 10, 11, 12], "1000px": [7, 8, 11, 12], "103887": [5, 6, 7, 8, 10, 12], "10394726": 9, "104": 9, "105": 10, "10570996": 9, "11": [1, 5, 9], "110": 10, "11010237": 9, "1117632750": 5, "1122708": 5, "1130552834": 5, "1134": 10, "114": 10, "115": 13, "11500943": 9, "1161291128": 5, "117": 9, "12": [1, 9, 10], "121": 10, "13": [1, 5, 6, 7, 8, 9, 10, 12], "13007399": 9, "13366421": 5, "136": 10, "13722972": 9, "1391": 10, "14": [1, 9], "1440840715635230871": 1, "14962448": 9, "15": [1, 5, 9, 11], "150": [3, 9], "15320557": 9, "15320583": 9, "15996": 9, "16": [1, 5, 9, 11], "163522": [5, 6, 7, 8, 10, 12], "164": 10, "165": 10, "166": 11, "16690030": 9, "167": 9, "16739098": 9, "17": [1, 5, 9, 10], "171": 10, "17340053": 9, "174": 12, "17496710": 9, "175": 5, "176": 10, "17770290": 5, "18": [1, 9], "180": 10, "183": 10, "18306654": 5, "184": 10, "186": 9, "18790262": 9, "19": [1, 6, 9, 10], "19063413": 9, "19297985": 9, "194": 10, "195": 13, "198": 10, "199": 10, "2": [1, 3, 6, 9, 10, 11, 12, 13], "20": [1, 9, 10], "200": 9, "2007": [7, 8], "2008": 12, "2012": 12, "20155561": 9, "2016": 6, "2021": 5, "2022": 5, "2023": [5, 6, 11], "2024": [5, 6, 7, 8, 11, 12], "2025": 0, "202726": 6, "20450590": 9, "20768452": 9, "20982460": 9, "21": [1, 6, 9, 12], "21125012": 9, "21160": 6, "21186164": 9, "212": 10, "21207980": 9, "21230154": 9, "21256164": 9, "21288883": 9, "21292063": 9, "21292317": 9, "21304240": 9, "21314713": 9, "21331501": 9, "21363124": 9, "21363912": 9, "21366183": 9, "217": 10, "22": [1, 9, 10], "222": 13, "226": 10, "229": 7, "23": [1, 5, 9], "233": 10, "24": [1, 9, 11], "241": [5, 10], "243": 13, "245": 9, "246": 10, "25": [1, 9, 11], "2500": 11, "251": 9, "255": [9, 10, 12], "256": 10, "257": 10, "258": 10, "26": [1, 6, 9], "261": 9, "268": 10, "269": 10, "27": [1, 5, 9, 13], "276": 10, "28": [1, 9], "2868": 10, "29": [1, 5, 6, 9, 10], "3": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13], "30": [1, 9], "300": 3, "31": 9, "318": 11, "319": 10, "32": [1, 9, 11, 12], "322": 10, "32632": 10, "32737": 10, "33": [1, 9, 11], "331": 5, "335": 10, "338271": [5, 6, 7, 8, 10, 12], "34": [1, 6, 9, 10, 11], "35": [1, 6, 9], "354": 10, "3575": 10, "36": [1, 5, 6, 7, 8, 9, 10, 12, 13], "361": 10, "365": 10, "37": [1, 5, 6, 7, 8, 10, 12], "3733993": 5, "379283": 6, "379556": [5, 6, 7, 8, 10, 12], "379866": 6, "379877": 6, "379926": 6, "38": [1, 9], "381": 10, "388": 9, "389": 10, "389789385": 6, "39": [1, 5], "396": 13, "4": [1, 6, 9, 10, 11, 13], "40": [1, 9, 10], "401": 10, "41": 11, "410362": [5, 6, 7, 8, 10, 12], "411": 10, "41416": [5, 6, 7, 8, 10, 12], "43": 10, "4326": [5, 6, 7, 8, 9, 10, 11, 12], "437890": [5, 6, 7, 8, 10, 12], "438": [5, 10], "439": 9, "44": [9, 13], "442": 5, "444471": [5, 6, 7, 8, 10, 12], "45": [5, 6, 14], "461": 10, "468": 9, "47": 11, "471": 10, "48": 1, "488": 13, "49": [1, 5, 6, 7, 8, 10, 12], "492": 7, "5": [1, 3, 5, 6, 7, 9, 10, 11, 13], "50": [1, 9], "500108893": 5, "50gb": [11, 12], "51": [1, 9, 11], "52": [1, 5, 6, 7, 8, 10, 12], "527170": 5, "53": [1, 6], "54": [1, 11], "540": 13, "541": 10, "547": 10, "548": 10, "55": 1, "552": 5, "557": 10, "56": 1, "563947": 9, "567": 10, "57": [1, 5, 9], "58": [1, 5, 9], "58999": [5, 6, 7, 8, 10, 12], "59": [1, 13], "590489": [5, 6, 7, 8, 10, 12], "6": [1, 7, 8, 9, 10, 11, 13], "60": [1, 9], "61": 1, "62": 1, "624": 10, "629761": [5, 6, 7, 8, 10, 12], "6298593": 6, "63": [1, 13], "6300405": 6, "6317677": 6, "632587599999999": 6, "6330643": 6, "634": 10, "638": 10, "64": 1, "65": [1, 12], "650938": [5, 6, 7, 8, 10, 12], "66": 1, "661": 10, "669": 10, "67": 1, "675509": [5, 6, 7, 8, 10, 12], "68": [1, 11], "6824404": 5, "6824528": 5, "69": 1, "69120": 14, "694": 10, "7": [1, 6, 8, 9, 13], "70": 1, "700": 12, "71": 1, "72": 1, "73": [1, 11], "732": 12, "734": 9, "735": 10, "74": 1, "742371": [5, 6, 7, 8, 10, 12], "75": [1, 9], "76": 1, "761161": [5, 6, 7, 8, 10, 12], "762": 10, "769836": 6, "77": [1, 11], "776": 10, "778": 6, "782": 10, "79": 1, "8": [1, 5, 6, 7, 8, 9, 10, 12, 13], "80": 1, "81": 1, "82": [1, 10], "83": 1, "832": 10, "8386618": 9, "84": 1, "841": 10, "85": 11, "858": 9, "86": 11, "8719435": 5, "872": 10, "878": 6, "882": 8, "88406439": 5, "89": 11, "895": 10, "898": 9, "89974139999999": 5, "8gb": [5, 6, 7, 8, 9, 10], "9": [1, 9, 10, 12, 13], "90": 13, "9238579": 5, "926": 10, "927": 10, "93": 10, "935": 10, "9449463": 9, "946": 10, "948": 9, "95": 10, "96": 13, "965": 5, "97": 10, "97716061": 6, "97720617": 6, "97720623": 6, "97753107": 6, "98": 11, "99": 11, "996": 10, "AND": [6, 8, 10], "AS": [5, 6, 7, 8, 10, 12], "BY": [7, 8, 9, 10, 11, 12], "For": 11, "IF": [2, 5, 6, 7, 8, 9, 10, 11, 12], "In": [1, 5, 6, 7, 8, 9, 10, 11, 12], "NOT": 10, "ON": 10, "THEN": [9, 10], "The": [3, 9], "There": 3, "These": [5, 7, 8, 9, 10, 11, 12], "WITH": 10, "Will": 3, "__default_s3": [2, 6, 8, 9, 10, 11, 12], "_osm_data": 5, "abdul": 9, "abhimanyubarun": 9, "abo": 9, "aboulatsambo": 9, "about": [3, 14], "acceler": 14, "access": [1, 4, 5, 7, 9, 10, 11, 12], "action": 9, "activ": 14, "actual": 11, "aczel": 9, "add": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "adel": 9, "adjust": [1, 2], "aer": 5, "aerialwai": [1, 3], "aerowai": [1, 3], "affili": 14, "again": 1, "all": [1, 5, 6, 7, 9], "allow": [4, 7, 11], "alpha": [7, 8, 11], "alreadi": [5, 6], "also": [9, 10], "alwai": 3, "amen": [1, 3], "an": [5, 6, 7, 8, 9, 11, 12], "analys": 9, "analysi": [1, 5, 6], "analyz": [7, 8, 11, 12], "aoi": [6, 8, 10, 12], "apach": [2, 14], "apartmen": 6, "api": 9, "api_url": 9, "append": [1, 9], "appli": [7, 8, 11], "apply_continuous_cmap": [7, 8, 11], "approxim": [7, 11], "ar": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12], "area": [1, 3, 5, 7, 8, 9, 10, 11, 12], "area_delta": [1, 3], "area_of_interest_fil": [6, 8, 10, 12], "around": [3, 7, 8, 11, 12], "arrai": 9, "asc": 12, "attribut": [1, 5, 6, 9, 13], "avail": [1, 5, 6, 10], "b": [7, 8, 10, 11, 12], "barrier": [1, 3], "basemap": [7, 8, 9, 10, 11, 12], "basemap_styl": [7, 8, 9, 10, 11, 12], "bazonzila": 9, "bbox": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "been": 9, "below": [1, 2], "benjamin": 14, "benni_test_heidelberg": 1, "beny": 9, "berlin": [5, 6, 7, 8, 10, 12, 14], "between": 3, "bigint": 3, "binari": 1, "bing": 3, "birken": 9, "blob": 3, "blues_9": 11, "boolean": [1, 2, 3, 6, 8, 9, 10, 11, 12], "both": [2, 9, 10], "bottleneck": [5, 6], "bound": [5, 6, 7, 10, 11, 12], "boundari": [1, 3], "bouyaosser": 9, "box": [5, 6, 7, 10, 11, 12], "brazil": 11, "bring": 1, "btr2": 9, "build": [1, 3, 5, 6, 14], "calcul": [11, 12], "call": 1, "calvin": 9, "can": [1, 4, 5, 6, 7, 14], "cartobasemap": [7, 8, 9, 10, 11, 12], "case": [9, 10], "catalog": [2, 5, 7, 9, 10, 11, 12], "cell": [3, 11], "central": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "centroid": [1, 3, 9], "changeset": [1, 4], "chart_data": 12, "chart_queri": [7, 8, 12], "check": [3, 5, 6], "choos": 4, "citi": 10, "client": [4, 5, 6], "clip": [10, 12], "clipped_geometri": 12, "cloud": 14, "cluster": 14, "code": [1, 2, 3, 13], "colab": 1, "color": [7, 8, 11, 12], "colorbrew": 11, "colormap": [7, 8, 11], "column": [1, 5, 6, 7, 8, 10, 11, 12], "column_nam": [5, 6], "column_stack": 12, "column_typ": [5, 6], "combin": [4, 9, 10], "common": [5, 6], "commun": 11, "comput": [7, 8, 12, 14], "con": [2, 5, 6, 7, 8, 9, 10, 11, 12], "config": [5, 6, 7, 8, 9, 10, 11, 12], "configur": [5, 6, 7, 8, 9, 10, 11, 12], "connect": [5, 6, 7, 8, 9, 10, 11, 12, 14], "consist": 1, "consumpt": 4, "contain": [5, 6, 9], "contiou": [7, 8, 12], "contrib_typ": [1, 3], "contribut": [1, 5, 7, 8, 9, 10, 11, 12, 14], "contributions_germani": [1, 6, 7, 8], "convert": [7, 8, 9, 10, 11, 12], "coordin": [5, 6], "copi": 2, "count": [5, 6, 7, 8, 9, 11], "count_star": [5, 6], "countri": 11, "country_iso_a3": [1, 3], "coverag": 14, "cpu": 10, "craft": [1, 3], "creat": [5, 6, 7, 8, 9, 10, 11, 12], "credenti": 2, "current": [1, 14], "currentness_map": [7, 8], "cyclewai": 10, "d": [7, 8, 11, 12, 14], "dai": [7, 8, 11, 12], "daili": 11, "dannyoung": 9, "darkmatt": [7, 8], "data": [1, 13], "databas": 1, "datafilterextens": [7, 8, 11, 12], "datafram": [7, 8, 9, 11, 12], "dataset": [4, 5, 6, 9, 10], "date": [7, 8, 11, 12], "date_rang": 12, "date_slid": [7, 8, 11, 12], "date_trunc": [7, 8, 11], "datetim": [7, 8, 11, 12], "datetime_kei": 12, "dateutil": 12, "deeper": 1, "def": 9, "default": [1, 5, 6, 7, 9, 10, 11, 12], "default_snapshot": 12, "defin": [5, 6, 7, 8, 9, 10, 11, 12], "definit": [7, 8, 9, 10, 11, 12], "deku": 9, "delet": [3, 5, 6, 13], "dellington_": 9, "dellington_d": 9, "delta": [7, 8, 11], "demonstr": [5, 7, 8, 9, 10, 11, 12], "desc": [9, 10], "describ": [5, 6], "descript": [3, 5, 6, 7, 8, 11, 12, 13], "desir": [7, 8, 11, 12], "detail": [1, 3, 5, 6, 7, 9], "determin": 3, "develop": 12, "df": [5, 6, 7, 8, 9, 10, 11, 12], "directional_link": [7, 8, 11, 12], "disabl": [7, 8, 11, 12], "displai": [1, 10], "distinct": 11, "dive": 1, "divin": 9, "do": 7, "doc": 3, "doubl": [1, 3, 10], "down": [5, 7, 8, 9, 10, 11, 12], "download": [4, 7, 8, 10, 11, 12, 14], "download_tim": [5, 6, 7, 8, 9, 10, 11, 12], "drag": [5, 6], "driver": [5, 6], "drop": [2, 5, 6, 7, 8, 9, 10, 11, 12], "ducdkb": [7, 8, 11, 12], "duckdb": [1, 4, 7, 9, 10, 11, 12, 14], "dynam": 14, "e": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "each": [5, 6, 7], "easier": 4, "easili": 4, "edit": [5, 6, 7, 8, 9], "editor": [1, 3, 9], "eldabless": 9, "element": [3, 4, 7], "elodienix": 9, "els": [9, 10], "emerg": [1, 3], "enable_object_cach": [6, 9, 11], "end": [7, 8, 9, 10, 11], "endpoint": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "entir": 11, "entri": 9, "enumer": 12, "environ": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "epoch_m": [7, 8, 11, 12], "epsg": [5, 6, 7, 8, 9, 10, 11, 12], "epsg_cod": 10, "erick": 9, "espg_cod": 10, "eu": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "evolut": 14, "exact": [5, 7], "excit": 14, "exist": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "expect": 1, "explain": 1, "explor": [2, 7, 8, 11, 12], "export": [5, 6], "extens": [7, 8, 11, 12], "extra": [5, 6], "extract": [5, 9], "extrud": 11, "f": [2, 5, 6, 7, 8, 9, 10, 11, 12], "factor": [5, 6], "fals": [7, 8, 11, 12], "fast": 7, "favorit": 4, "featur": [5, 6], "few": [5, 6], "file": [4, 5, 6], "filter": [6, 7, 8, 10, 11, 12], "filter_rang": [7, 8, 11, 12], "filter_s": [7, 8, 11, 12], "filter_valu": 12, "find": 1, "first": [7, 9], "float": 12, "follow": [3, 5, 6], "footwai": 10, "format": [3, 4, 5], "four": [5, 6], "fr": 9, "franci": 9, "freq": 12, "from": [1, 4, 5, 7, 8, 9, 10, 11, 12, 14], "from_geopanda": [7, 8, 9, 10, 11, 12], "from_wkt": [5, 6, 7, 8, 9, 10, 11, 12], "full": [4, 14], "fun": [7, 8, 11, 12], "further": [5, 7, 8, 9, 10, 11, 12], "furthermor": [5, 6, 9, 11], "g": [1, 4, 5, 6, 7, 8, 9, 10, 11, 12], "gdc_christi": 9, "gdf": [5, 6, 7, 8, 9, 10, 11, 12], "geo": 14, "geo_sort": [1, 5, 6, 7, 9, 10, 11, 12], "geo_sort_ext": [6, 8], "geodata": [7, 8, 9, 10, 11, 12], "geodatafram": [5, 6, 7, 8, 9, 10, 11, 12], "geograph": 4, "geoinform": 14, "geojson": [6, 8, 10, 12], "geolog": [1, 3], "geom": [6, 8, 10, 12], "geom_typ": 9, "geometri": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "geometry_typ": [1, 3, 5, 6, 7, 8, 10, 12, 13], "geometry_valid": [1, 3], "geometrycollect": [3, 13], "geopackag": 14, "geopanda": [5, 6, 7, 8, 9, 10, 11, 12], "georg": 9, "geoseri": [5, 6, 7, 8, 9, 10, 11, 12], "geospati": 3, "germani": 11, "get": 4, "get_color": [10, 12], "get_current_usernam": 9, "get_elev": 11, "get_fill_color": [7, 8, 9, 11], "get_filter_valu": [7, 8, 11, 12], "get_line_color": 9, "get_line_width": 9, "get_width": 10, "ggmbh": 14, "gib": 13, "global": 3, "globalturtl": 9, "gloir": 9, "gmagnancha": 9, "go": [2, 5, 6, 9, 10], "googl": 1, "gpd": [5, 6, 7, 8, 9, 10, 11, 12], "gpkg": [5, 6], "gpu": 12, "group": [1, 7, 8, 9, 10, 11, 12], "h3": [3, 11], "h3_cell_to_boundary_wkt": 11, "h3_r5": [1, 3, 11], "hash": 9, "hashtag": [1, 3, 9], "have": [1, 3, 5, 6, 7, 8, 9, 11, 12], "haven": 1, "healthcar": [1, 3], "heidelberg": [5, 6, 7, 8, 10, 12, 14], "heidelberg_osm_data": 6, "height": 11, "heigit": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "here": [1, 5, 6, 7, 8, 9, 10, 11, 12], "herfort": 14, "hierarch": 3, "highwai": [1, 3, 10], "highway_valu": 10, "histor": [1, 3, 5, 6, 12], "histori": [3, 9, 11, 12, 13, 14], "hive_partit": [6, 8], "host": 14, "hot": 14, "hot_tasking_manag": 9, "hot_tm_lay": 9, "hot_tm_parquet_data_path": 9, "hot_tm_project_id": 9, "hotosm": 9, "how": [5, 7, 8, 9, 10, 11, 12, 14], "http": [1, 2, 5, 7, 9, 10, 11, 12], "i": [4, 5, 6, 7, 8, 9, 10, 11, 12], "ibrahim": 9, "iceberg": [2, 5, 7, 9, 10, 11, 12, 14], "iceberg_t": 1, "icebergt": [5, 7, 9, 10, 11, 12], "id": [1, 3, 5, 7, 9, 10, 11, 12], "id_edit": 9, "imageri": 10, "impl": [1, 5, 7, 9, 10, 11, 12], "import": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "index": [3, 7, 8], "info": 9, "inform": [4, 5, 6], "initial_filter_rang": 12, "input": [5, 6], "inspect": [1, 5, 6, 9], "instal": [1, 5, 11, 12], "install_extens": [5, 6, 7, 8, 9, 10, 11, 12], "instead": 11, "institut": 14, "int": [1, 7, 8], "int32": [5, 6], "int64": [5, 6], "int8": 12, "integ": [3, 5, 6], "interact": [7, 8, 11, 12], "interest": [5, 7, 8, 10, 11, 12], "internet": [5, 6], "interv": [11, 12], "invalid": [3, 13], "invalidgeometri": [3, 13], "investig": 9, "io": [1, 5, 7, 9, 10, 11, 12], "ipywidget": [7, 8, 11, 12], "isinst": 9, "jaco452": 9, "jimerveil": 9, "join": [10, 12], "josm": 9, "josm_edit": 9, "json": 9, "jupyt": [0, 5, 6], "just": [5, 6], "kei": [1, 5, 6, 7, 9, 10, 11, 12], "kenaurd": 9, "kenya": 11, "key_id": [2, 6, 8, 9, 10, 11, 12], "kib": 13, "kilomet": [10, 12], "km\u00b2": 3, "kognoko": 9, "lambda": [7, 8, 11, 12], "landus": [1, 3], "languag": 4, "laptop": [5, 6], "larg": 4, "last": [7, 8], "later": [5, 6], "latest": [3, 6, 7, 8, 9, 10, 11, 12, 13, 14], "latitud": [9, 10, 11, 12], "layer": [7, 8, 9, 10, 11, 12], "layer_extens": [7, 8, 11, 12], "layout": [7, 8, 11, 12], "leaderboard": 9, "left": 10, "leisur": [1, 3], "len": [7, 8, 9], "length": [1, 3, 10, 12], "length_delta": [1, 3], "length_km": [10, 12], "let": [1, 9], "level": [1, 3, 10], "librari": [1, 11], "like": 1, "limit": [5, 6, 10], "line": [1, 12], "linestr": [3, 5, 6, 9, 10, 12, 13], "link": [7, 8, 9], "list": [1, 9, 10], "list_contain": 9, "list_namespac": 1, "list_tabl": 1, "living_street": 10, "ll": 2, "load": 11, "load_extens": [5, 6, 7, 8, 9, 10, 11, 12], "load_tabl": [1, 5, 7, 9, 10, 11, 12], "locat": [3, 5, 6, 7, 8, 9, 10, 11, 12], "lonboard": [7, 8, 9, 10, 11, 12], "long": 1, "longitud": [9, 10, 11, 12], "m": [3, 9, 12], "made": 9, "mainli": 11, "major": [5, 6], "man_mad": [1, 3], "manag": [5, 6, 14], "mannheim": [5, 6, 7, 8, 10, 12], "map": [0, 1, 5, 6, 9, 10, 14], "map_featur": [1, 3], "map_queri": [7, 8, 10, 12], "mapillari": [4, 14], "mapillary_coverag": 10, "mapillary_data": 10, "mapillary_lay": 10, "mapillary_map": 10, "mapillary_parquet_data_path": 10, "mapillary_sequ": 10, "mapper": 9, "mariannamuk": 9, "mariannamukulunga": 9, "maryamarab": 9, "match": 10, "matching_mapillary_sequ": 10, "materi": 0, "mathematikon": 14, "matplotlib": [7, 8], "matter": 11, "max": [11, 12], "max_memori": [5, 6, 7, 8, 9, 10, 11, 12], "max_timestamp": [5, 6, 12], "max_valid_from": [7, 8, 11], "max_valid_to": 12, "max_valu": 11, "mbani": 9, "media": 9, "medodzi": 9, "member": [1, 3], "menttor": 9, "mercy14846": 9, "metadata": 1, "mib": 13, "militari": [1, 3], "million": 3, "min": 12, "min_timestamp": [5, 6, 12], "min_valid_from": [7, 8, 11, 12], "min_valu": 11, "minio": [1, 5, 6, 7, 8, 9, 10, 11, 12, 14], "mlingi": 9, "month": [7, 8, 12], "more": [3, 5, 6, 7], "most": [5, 6, 9], "motorwai": 10, "motorway_link": 10, "mountou": 9, "move": [7, 8, 11, 12], "much": 9, "multi": 9, "multilinestr": 12, "multipolygon": [3, 13], "my_user_access_kei": 2, "my_user_secret_kei": 2, "m\u00b2": 3, "n_edit": [7, 8, 9], "n_user": 11, "nairobi": [5, 6, 7, 8, 10, 12], "name": [1, 3, 5, 7, 9, 10, 11, 12, 13], "namespac": [1, 5, 6, 7, 9, 10, 11, 12], "nan": 11, "nan_to_num": 11, "natur": [1, 3], "nayar": 9, "need": [2, 7, 9, 14], "ness": [7, 8], "network": 14, "new": [2, 14], "next": [1, 2], "nkpa": 9, "nkpagneer": 9, "normal": [7, 8, 11], "not_covered_length_km": 10, "not_covered_osm_data": 10, "not_covered_osm_length": 10, "notebook": [0, 5, 6, 7, 8, 9, 10, 11, 12], "notoncebut2x": 9, "now": [1, 2], "np": [11, 12], "null": [5, 6, 7, 8, 10, 12], "number": [5, 6, 11], "numpi": [11, 12], "nzaht": 9, "o": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "object": [1, 6, 8, 9, 10, 11, 12, 14], "offic": [1, 3], "ohsom": [1, 5, 7, 8, 9, 10, 11, 12], "okama": 9, "onli": [1, 10], "openstreetmap": [4, 9], "oper": 1, "optim": [4, 5, 6], "option": [1, 5, 6, 7, 8, 11, 12], "optmiz": 7, "order": [1, 7, 8, 9, 10, 11, 12], "org": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "organ": 1, "osm": [4, 6, 14], "osm_data": [5, 6, 7, 8, 10, 12], "osm_data_df": 10, "osm_data_gdf": 10, "osm_df": 9, "osm_evolution_map": 12, "osm_gdf": 9, "osm_id": [1, 3, 5, 6, 9, 10, 12], "osm_lay": 10, "osm_lines_lay": 9, "osm_map": [9, 10], "osm_points_lay": 9, "osm_polygons_lay": 9, "osm_stat": 12, "osm_typ": [1, 3], "osm_vers": [1, 3, 5, 6, 9, 10, 12], "other": [1, 4], "our": [5, 6, 7, 9, 14], "out": [1, 5, 6, 10], "output_filenam": [5, 6], "over": 12, "overal": [5, 6], "overlai": 10, "overtur": 4, "overview": [5, 6], "overview_map": 9, "own": [4, 14], "page": [1, 5, 6], "palett": [7, 8, 11], "panda": [11, 12], "panladawuda": 9, "param": [5, 6, 7, 8, 9, 10, 11, 12], "paramet": 5, "parquet": [4, 6, 8, 13], "parquet_data_path": [6, 8], "part": [5, 6, 8, 10, 12], "partit": [1, 14], "password": [1, 5, 6, 7, 8, 9, 10, 11, 12], "path": [2, 6, 8, 9, 10, 11, 12], "pathlay": [9, 10, 12], "pd": [11, 12], "pedestrian": 10, "per": [10, 11], "perei": 9, "perform": [5, 6, 7], "peter": 9, "php": 9, "pip": [1, 5, 11, 12], "pitch": 11, "pl": [7, 8, 12], "place": [1, 3], "point": [3, 5, 6, 9, 13], "polygon": [3, 5, 6, 7, 8, 9, 11, 13], "polygonlay": [9, 11], "positron": [9, 10, 11, 12], "postgr": 1, "potenti": [3, 5, 6, 7], "power": [1, 3], "pre": 7, "precomput": 4, "prepar": 5, "preview": 14, "primari": 10, "primary_link": 10, "print": [5, 6, 7, 8, 9, 10, 11, 12], "process": [6, 7, 10, 11, 12, 13], "processing_tim": [5, 6, 7, 10, 11, 12], "program": 4, "project": 14, "project_id": 9, "provid": 14, "public_transport": [1, 3], "py": [1, 5, 7, 9, 10, 11, 12], "pyarrow": [1, 5, 7, 9, 10, 11, 12], "pyarrowfileio": [1, 5, 7, 9, 10, 11, 12], "pyiceberg": [7, 9, 10, 11, 12], "python": 1, "quadkei": 3, "quadkey_z10": [1, 3], "queri": [2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "r237497": 9, "rabiatu": 9, "rai": 5, "railwai": [1, 3], "ram": 10, "rang": [7, 8, 11, 12], "rare": [5, 6], "raw_osm_data": [5, 7, 9, 10, 11, 12], "read_parquet": [6, 8, 9, 10], "readi": 2, "reduc": [5, 6], "region": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "relativedelta": 12, "replac": [7, 8, 11, 12], "request": 9, "residenti": 10, "resolut": 3, "resourc": 4, "respons": [9, 12], "rest": [1, 5, 7, 9, 10, 11, 12], "restcatalog": [1, 5, 7, 9, 10, 11, 12], "result": [5, 6, 10], "return": [7, 8, 9, 11], "road": 14, "road_length": 12, "role": [1, 3], "round": [5, 6, 7, 8, 9, 10, 11, 12], "rout": [1, 3], "row": 10, "row_filt": [5, 7, 9, 10, 11, 12], "row_numb": 12, "ru": 9, "run": [1, 14], "s3": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_access_key_id": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_password": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_secret_access_kei": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3_user": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "s3a": [6, 8, 9, 10, 12], "s3f": [1, 5, 11, 12], "salli": 9, "sample_data": [10, 12], "satur": 12, "sbribri": 9, "scan": [7, 9, 10, 11, 12], "scatterplotlay": 9, "schema": 1, "schema_id": 1, "sec": [5, 6, 7, 8, 9, 10, 11, 12], "second": [5, 7], "secondari": 10, "secondary_link": 10, "secret": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "see": [5, 7, 8, 9, 10, 11, 12], "select": [5, 6, 7, 8, 9, 10, 11, 12], "selected_field": [5, 7, 9, 10, 11, 12], "selected_region": [5, 6, 7, 8, 10, 11, 12], "selectionrangeslid": [7, 8], "selectionslid": [11, 12], "sequenti": 11, "server": [5, 6], "servic": 10, "set": [1, 5, 6, 7, 8, 9, 10, 11, 12], "set_cr": [5, 6, 7, 8, 9, 10, 11, 12], "shop": [1, 3], "should": [5, 6, 14], "show": [2, 5, 6, 8, 9, 10, 11, 12, 14], "singl": [1, 6], "size": [3, 5, 6], "slider": [7, 8, 11, 12], "snapshot": [1, 12], "snapshot_index": 12, "sneak": 14, "solidpolygonlay": [7, 8], "some": 1, "sort": [1, 14], "sort_valu": 9, "sotm2024": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12], "sotm24": [6, 8, 9, 10, 12], "sou": 6, "spatial": [5, 6, 7, 8, 9, 10, 11, 12], "special": 4, "sport": [1, 3], "sql": [1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12], "sqlite": [1, 5, 11, 12], "st_astext": [10, 12], "st_buffer": 10, "st_geometrytyp": 12, "st_geomfromtext": [6, 8, 10, 12], "st_intersect": [6, 8, 10, 12], "st_length_spheroid": [10, 12], "st_read": [6, 8, 10, 12], "st_transform": 10, "start_tim": [5, 6, 7, 8, 9, 10, 11, 12], "start_timestamp": 11, "state": 0, "statist": 4, "statu": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13], "status_cod": 9, "step": [1, 2, 7, 8, 9, 10, 11, 12], "storag": [6, 8, 9, 10, 11, 12], "store": [1, 14], "str": 14, "street": 10, "strftime": [7, 8, 11, 12], "string": 1, "struct": [1, 3], "structur": [1, 5, 6, 14], "style": [7, 8, 11, 12], "success": [2, 6, 8, 9, 10, 11, 12], "sulemana": 9, "sum": [9, 10, 12], "sungumu": 9, "susan27": 9, "system": 3, "t": 1, "tabl": [1, 2, 6, 7, 8, 9, 10, 11, 12], "tablenam": [5, 7, 9, 10, 11, 12], "tag": [1, 3, 5, 6, 7, 8, 9, 10, 12], "tags_befor": [1, 3, 9], "tamba": 9, "task": 14, "teach": 14, "team": 14, "technologi": 14, "telecom": [1, 3], "tertiari": 10, "tertiary_link": 10, "textual": 9, "them": 2, "thi": [1, 3, 7, 8, 9, 10, 11, 12, 14], "thing": 1, "think": 1, "thread": [5, 6, 7, 8, 9, 10, 11, 12], "through": [5, 6], "tile": 3, "time": [5, 6, 7, 8, 9, 10, 11, 12], "time_interv": 11, "timedelta": [7, 8, 11], "timestamp": [1, 3, 5, 6, 7, 8, 11, 12], "timezon": 11, "to_duckdb": [5, 7, 9, 10, 11, 12], "to_fil": [5, 6], "to_numpi": 11, "togeth": 1, "tolist": 12, "took": [5, 6, 7, 8, 9, 10, 11, 12], "top": [10, 12], "top_mapp": 9, "total_length_km": 10, "total_osm_length": 10, "total_stat": 10, "track": 10, "traitlet": [7, 8, 11, 12], "transform": [11, 12], "trino": 4, "true": [2, 6, 8, 9, 10, 11, 12], "trunk": 10, "trunk_link": 10, "tungbani": 9, "two": [9, 10, 11], "type": [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12], "tzinfo": 11, "u": 11, "ubigint": 3, "unclassifi": 10, "uncovered_stat": 10, "understand": 14, "univers": 14, "up": [1, 7, 8], "uri": [1, 5, 7, 9, 10, 11, 12], "url_styl": [2, 6, 8, 9, 10, 11, 12], "us": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14], "use_ssl": [2, 6, 8, 9, 10, 11, 12], "user": [1, 5, 6, 7, 8, 10, 12, 14], "user_activity_map": 11, "user_activity_styl": 11, "user_id": [1, 3, 5, 6, 9, 10, 11, 12], "user_ids_list": 9, "user_info": 9, "user_names_list": 9, "user_stats_df": 9, "usernam": 9, "usual": [5, 6], "utc": 11, "v": [11, 12], "valid_from": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "valid_from_styl": [7, 8], "valid_to": [1, 3, 9, 12], "valu": [3, 5, 6, 7, 8, 9, 11, 12, 13], "varch": [5, 6], "varchar": [3, 5, 6, 10], "vari": 3, "via": [5, 6, 9], "view_stat": [9, 10, 11, 12], "vijayb2345": 9, "viridis_20": [7, 8], "visual": [7, 8, 11, 12], "wai": [4, 5, 6, 7], "want": [5, 6, 9, 10], "water": [1, 3], "waterwai": [1, 3], "we": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14], "websit": 2, "when": [1, 9, 10], "where": [1, 5, 6, 7, 8, 9, 10, 12], "which": [1, 5, 6, 10], "who": 9, "whosthat": 9, "why": 14, "widget": [7, 8], "width": [7, 8, 11, 12], "width_min_pixel": 12, "wisdom": 9, "without": 14, "wkt": 3, "would": [5, 6], "write": 4, "wun": 9, "wunpini": 9, "www": 9, "x": [1, 3, 7, 8, 9, 11, 12], "xavier": 9, "xaxi": 12, "xmax": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "xmin": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "xzcode": [1, 3, 13], "y": [1, 3, 7, 8, 9, 11, 12], "ye": [5, 6], "yet": [1, 10], "ymax": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "ymin": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12], "you": [1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 14], "your": [1, 2, 5, 6, 14], "ziggyentumi": 9, "zoom": [3, 9, 10, 11, 12]}, "titles": ["sotm-2024-ohsome-data-insights-workshop", "Connect to Apache Iceberg", "Connect to MinIO Object Store", "Data Structure", "Why should you be excited about ohsome-data-insights?", "Download latest OSM data as GeoPackage", "DuckDB: Data Extraction from geo-sorted ohsome contributions", "Currentness of Buildings", "DuckDB: Currentness of Buildings", "HOT Tasking Manager project analysis", "Mapillary Coverage Analysis", "User activity map", "Road Network Evolution", "Partitioning and Sorting", "Welcome to ohsome-data-insights Workshop @ SOTM 2024"], "titleterms": {"1st": 13, "2024": [0, 14], "2nd": 13, "In": 2, "about": [4, 9], "access": 2, "account": 2, "activ": 11, "advanc": 14, "an": 1, "analysi": [7, 8, 9, 10, 11, 12, 14], "apach": 1, "attribut": [3, 4], "background": 14, "buffer": 10, "build": [7, 8], "calcul": 10, "catalog": 1, "changeset": [3, 9], "chart": [7, 8, 12], "connect": [1, 2], "contact": 14, "contribut": [6, 13], "cover": 10, "coverag": 10, "creat": 2, "current": [7, 8], "data": [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14], "displai": [7, 8, 9, 11, 12], "download": [5, 6, 9], "duckdb": [2, 5, 6, 8], "enrich": 4, "evolut": 12, "excit": 4, "extract": [4, 6, 14], "fast": 4, "featur": [3, 7, 8], "filter": [5, 9], "find": 10, "fit": 4, "flexibl": 4, "from": 6, "gener": 3, "geo": [6, 13], "geograph": 3, "geopackag": [5, 6], "get": [1, 5, 6, 7, 8, 9, 10, 11, 12, 14], "highwai": 12, "hot": 9, "hvplot": [7, 8], "i": 1, "iceberg": 1, "inform": 9, "input": [7, 8, 9, 10, 11, 12], "insight": [0, 4, 14], "integr": [4, 14], "kei": 2, "latest": 5, "level": 13, "log": 2, "manag": 9, "map": [3, 7, 8, 11, 12], "mapillari": 10, "matter": [5, 6], "minio": 2, "network": [10, 12], "object": 2, "ohsom": [0, 4, 6, 13, 14], "onli": [5, 6], "osm": [2, 3, 5, 7, 8, 9, 10, 11, 12], "overview": 1, "paramet": [7, 8, 9, 10, 11, 12], "partit": 13, "plot": [7, 8, 12], "polar": [7, 8], "prepar": [7, 8, 9, 10, 11, 12], "process": 5, "project": 9, "pyiceberg": [1, 5], "qgi": [5, 6], "relat": 3, "road": [10, 12], "save": [5, 6], "scan": 5, "sequenc": 10, "share": 10, "should": 4, "simpl": 14, "sort": [6, 13], "sotm": [0, 14], "special": 3, "speed": [5, 6], "start": [5, 6, 7, 8, 9, 10, 11, 12, 14], "statist": 9, "step": [5, 6], "store": 2, "structur": 3, "style": 4, "tabl": 5, "task": 9, "thi": [5, 6], "time": 13, "us": 9, "user": [9, 11], "via": [1, 2], "wai": 10, "welcom": 14, "what": 1, "why": 4, "work": [5, 6], "workshop": [0, 14], "you": 4, "your": [4, 7, 8, 9, 10, 11, 12]}}) \ No newline at end of file