{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "51e3eee3-b3ab-4b9a-a74d-7b29a9256972", "metadata": {}, "outputs": [], "source": [ "import os\n", "from omegaconf import OmegaConf\n", "import pandas as pd\n", "import numpy as np\n", "import rasterio as rio\n", "import matplotlib.pyplot as plt\n", "import geopandas as gpd\n", "import seaborn as sns\n", "from tqdm.notebook import tqdm\n", "#\n", "from IPython.display import IFrame, Image\n", "#\n", "from src import utils as ut\n", "from src import geo\n", "from src import data\n", "from src import plot\n", "%matplotlib widget\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "id": "d3465945-2045-4eab-beac-7d35baae06ff", "metadata": {}, "source": [ "Main task:\n", "\n", "starting from a peak in an Italian region, create a visibility network of mountain peaks and identify a\n", "series of routes with the best panoramic views\n", "Digital elevation model (DEM) of the whole Italian territory\n", "https://tinitaly.pi.ingv.it/" ] }, { "cell_type": "markdown", "id": "de7ffa4b-91c5-4d2b-96e8-0e629cd52d6e", "metadata": {}, "source": [ "## Environment Setup" ] }, { "cell_type": "markdown", "id": "b5bc97eb-fe1b-47d1-8da8-7545f33d36b0", "metadata": {}, "source": [ "set random seeds and create initial directories if not existing" ] }, { "cell_type": "code", "execution_count": 2, "id": "6e2482cf-ab4a-41e2-bba2-d45b7c29411e", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "conf = OmegaConf.load(\"config.yaml\")\n", "ut.set_environment(conf.env.seed)\n", "os.makedirs(conf.env.figures.path, exist_ok=True)" ] }, { "cell_type": "markdown", "id": "69d9669e-815b-46b3-b254-8982bfda09b0", "metadata": {}, "source": [ "## Data retrieval" ] }, { "cell_type": "markdown", "id": "abaef41e-1dc6-4a12-b68f-f247fc770422", "metadata": {}, "source": [ "download required data" ] }, { "cell_type": "markdown", "id": "4667337b-94f1-4418-9dcd-8d09a6220b58", "metadata": {}, "source": [ "| **Name** | **Author** | **CRS** | **EPSG** | **License** |\n", "|:---:|:---:|:---:|:---:|:---:|\n", "| **TINITALY 1.1
Digital Elevation Model** | INGV
Tarquini et al. | WGS84
UTM zone 32N | 32062 | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) |\n", "| **ISTAT
Italian boundaries** | ISTAT | WGS84
UTM zone 32N | 32062 | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) |\n", "| **SAT
Trentino mountain trails** | SAT | ETRS89 UTM zone 32N | 25832 | [ODbL](https://opendatacommons.org/licenses/odbl/1.0/) |" ] }, { "cell_type": "markdown", "id": "4137713c-bc9c-4d3b-b11d-a4eb9a4f90a1", "metadata": {}, "source": [ "references:\n", "\n", "* Tarquini, S., Isola, I., Favalli, M., & Battistini, A. (2007). TINITALY, a digital elevation model of Italy with a 10 meters cell size (Version 1.1). Istituto Nazionale Di Geofisica e Vulcanologia (INGV), 10. https://doi.org/10.13127/tinitaly/1.1\n", "* Tarquini, S., Isola, I., Favalli, M., Mazzarini, F., Bisson, M., Pareschi, M. T., & Boschi, E. (2007). TINITALY/01: A new triangular irregular network of Italy. Annals of Geophysics. https://doi.org/10.4401/ag-4424\n", "* Istituto Nazionale di Statistica. (2023). Confini delle unità amministrative a fini statistici al 1° gennaio 2023. https://www.istat.it/it/archivio/222527\n", "* Società degli Alpinisti Tridentini (SAT). (2023). Sentieri dell’intera rete SAT. https://sentieri.sat.tn.it/static/download-sentieri.html" ] }, { "cell_type": "code", "execution_count": 3, "id": "1f8b8a89-b058-4443-87d6-1cddef6e2993", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "if conf.dem.download:\n", " data.download_dem(\n", " url_root = conf.dem.url.root,\n", " url_download = conf.dem.url.download,\n", " outpath = conf.dem.path,\n", " tiles = conf.dem.tiles)\n", "#\n", "if conf.boundaries.download:\n", " data.download_zip(\n", " url = conf.boundaries.url,\n", " outpath = conf.boundaries.path.root)\n", "#\n", "if conf.routes.download:\n", " data.download_zip(\n", " url = conf.routes.url,\n", " outpath = conf.routes.path)" ] }, { "cell_type": "markdown", "id": "62de64f0-a234-4549-aa08-21e6e4491513", "metadata": {}, "source": [ "## Data Exploration" ] }, { "cell_type": "markdown", "id": "e0dbc1ca-b4eb-431a-be4f-ee6e36d20d9c", "metadata": {}, "source": [ "### DEM Raster" ] }, { "cell_type": "markdown", "id": "121e4163-fd91-4d32-bbfd-41ec1362d0d6", "metadata": {}, "source": [ "Check rasters metadata for validation" ] }, { "cell_type": "code", "execution_count": 4, "id": "bd5afe74-4338-4dc8-9409-7f6f962e0daa", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CRSShapeHeight [km]Width [km]
Tile
w51560EPSG:32632(5005, 5010)50.0550.1
w51060EPSG:32632(5010, 5010)50.1050.1
w50560EPSG:32632(5010, 5010)50.1050.1
w51565EPSG:32632(5010, 5010)50.1050.1
w51065EPSG:32632(5010, 5010)50.1050.1
w50565EPSG:32632(5010, 5010)50.1050.1
w51570EPSG:32632(5010, 5010)50.1050.1
w51070EPSG:32632(5010, 5010)50.1050.1
w50570EPSG:32632(5010, 5010)50.1050.1
\n", "
" ], "text/plain": [ " CRS Shape Height [km] Width [km]\n", "Tile \n", "w51560 EPSG:32632 (5005, 5010) 50.05 50.1\n", "w51060 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w50560 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w51565 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w51065 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w50565 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w51570 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w51070 EPSG:32632 (5010, 5010) 50.10 50.1\n", "w50570 EPSG:32632 (5010, 5010) 50.10 50.1" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: tbl-dem-check\n", "#| echo: false\n", "#| tbl-cap: Metadata of the downloaded DEM tiles.\n", "df_explore = data.get_rasters_metadata(conf.dem.path, conf.dem.tiles)\n", "df_explore" ] }, { "cell_type": "markdown", "id": "4ee769e7-9ca3-4b62-9237-7f80c5d942d3", "metadata": {}, "source": [ "some tiles have different shapes as they are at the boundaries of Italy." ] }, { "cell_type": "markdown", "id": "06ac704c-0be1-4c46-adec-ba9e05dd842c", "metadata": {}, "source": [ "### Italian Boundaries" ] }, { "cell_type": "code", "execution_count": 5, "id": "0aac2e27-f4eb-4308-a3c6-a98d5572b655", "metadata": {}, "outputs": [], "source": [ "reg = gpd.read_file(os.path.join(conf.boundaries.path.root, conf.boundaries.path.shp))" ] }, { "cell_type": "code", "execution_count": 6, "id": "e24a7ebb-aa3f-4bec-bd06-5ddeea723a47", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "COLUMNS: Index(['COD_RIP', 'COD_REG', 'COD_PROV', 'COD_CM', 'COD_UTS', 'DEN_PROV',\n", " 'DEN_CM', 'DEN_UTS', 'SIGLA', 'TIPO_UTS', 'Shape_Area', 'geometry'],\n", " dtype='object')\n", "CRS: EPSG:32632\n" ] } ], "source": [ "#| label: reg-metadata\n", "#| echo: true\n", "#| code-fold: true\n", "#| code-filename: main.ipynb\n", "reg = gpd.read_file(os.path.join(conf.boundaries.path.root, conf.boundaries.path.shp))\n", "print(\"COLUMNS: \" + str(reg.columns))\n", "print(\"CRS: \" + str(reg.crs))" ] }, { "cell_type": "markdown", "id": "2122d65c-ed79-4b2f-b61a-7ae1f53a4686", "metadata": {}, "source": [ "columns are described here: https://www.istat.it/it/files//2018/10/Descrizione-dei-dati-geografici-2020-03-19.pdf" ] }, { "cell_type": "markdown", "id": "c8c36c53-445e-48b7-83b1-d0d60d7dc07f", "metadata": {}, "source": [ "Filter out for the desired region of interest by looking at the field **DEN_UTS** (or DEN_PROV) for the Provincia Autonoma di Trento. Switch it to COD_REG if interested in a region. " ] }, { "cell_type": "code", "execution_count": 7, "id": "74b0aded-4bae-4df3-8809-049419ec5ce7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
COD_RIPCOD_REGCOD_PROVCOD_CMCOD_UTSDEN_PROVDEN_CMDEN_UTSSIGLATIPO_UTSShape_Areageometry
212422022Trento-TrentoTNProvincia autonoma6.208170e+09POLYGON ((716676.337 5153931.623, 716029.354 5...
\n", "
" ], "text/plain": [ " COD_RIP COD_REG COD_PROV COD_CM COD_UTS DEN_PROV DEN_CM DEN_UTS SIGLA \\\n", "21 2 4 22 0 22 Trento - Trento TN \n", "\n", " TIPO_UTS Shape_Area \\\n", "21 Provincia autonoma 6.208170e+09 \n", "\n", " geometry \n", "21 POLYGON ((716676.337 5153931.623, 716029.354 5... " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: reg-filter\n", "#| echo: true\n", "#| code-fold: true\n", "#| code-filename: main.ipynb\n", "reg = reg.loc[reg.DEN_UTS.str.lower().str.contains(str(conf.boundaries.region).lower())]\n", "reg" ] }, { "cell_type": "markdown", "id": "2f7c34d1-3be6-45b2-86b3-e816ad236870", "metadata": {}, "source": [ "### Routes" ] }, { "cell_type": "code", "execution_count": 8, "id": "e49446c1-5d98-4c49-9ef4-84d4063d4241", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "COLUMNS: Index(['numero', 'competenza', 'denominaz', 'difficolta', 'loc_inizio',\n", " 'loc_fine', 'quota_iniz', 'quota_fine', 'quota_min', 'quota_max',\n", " 'lun_planim', 'lun_inclin', 't_andata', 't_ritorno', 'gr_mont',\n", " 'comuni_toc', 'geometry'],\n", " dtype='object')\n", "CRS: EPSG:25832\n" ] } ], "source": [ "#| label: routes-metadata\n", "#| echo: true\n", "#| code-fold: true\n", "#| code-filename: main.ipynb\n", "routes = gpd.read_file(conf.routes.path)\n", "print(\"COLUMNS: \" + str(routes.columns))\n", "print(\"CRS: \" + str(routes.crs))" ] }, { "cell_type": "markdown", "id": "a4b7dd56-b6b3-446f-b916-61af6dbd0edc", "metadata": {}, "source": [ "This needs to be converted to the **WGS84 - UTM 32N**" ] }, { "cell_type": "markdown", "id": "3a446eb8-a098-4a7f-91ad-2693a6379512", "metadata": {}, "source": [ "Check the amount of errors between the nominal planimetric length of the routes (**lun_planim**), and the one computed by geopandas." ] }, { "cell_type": "code", "execution_count": 9, "id": "758032cf-fac1-47fb-8303-6ecb9f81f6fa", "metadata": {}, "outputs": [], "source": [ "routes['error'] = routes.geometry.length-routes.lun_planim" ] }, { "cell_type": "markdown", "id": "4b599e16-6833-4294-8d31-fef6163439d5", "metadata": {}, "source": [ "Explore the distributions of the routes metadata" ] }, { "cell_type": "code", "execution_count": 10, "id": "dfd35dea-bd57-4f3a-9dd2-bc1676252abc", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/davide/.local/share/virtualenvs/unitn_geospatial-7KxAb5oA/lib/python3.11/site-packages/geopandas/plotting.py:982: UserWarning: To output multiple subplots, the figure containing the passed axes is being cleared.\n", " return PlotAccessor(data)(kind=kind, **kwargs)\n" ] }, { "data": { "image/png": "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zMxMmDJlinD58uVnDn+elJQkjB07VrCxsRGkUqlgY2MjTJw4Ufjvf/+rs/2vvvpKcHJyEtq1a6ezzac/x9rqrh3+/IsvvhDCwsIES0tLwdjYWPDx8RF++umnKu+PjIwUXnjhBUEmkwmvv/66cOnSpWo/j5rqVt25e/jwoRAcHCzY2NgI7du3F1566SXhww8/FCorK3XiAAiBgYFV6lTTsOxERPrEQBD4NCcREREREVF98BkpIiIiIiKiemIiRUREREREVE9MpIiIiIiIiOqJiRQREREREVE9MZEiIiIiIiKqJyZSRERERERE9cREioiIiIiIqJ6YSBEREREREdUTEykiIiIiIqJ6YiJFRERERERUT0ykiIiIiIiI6omJFBERERERUT0xkSIiIiIiIqonJlJERERERET1xESKiIiIiIionphIERERERER1RMTKSIiIiIionpiIkVERERERFRPTKSIiIiIiIjqiYkUERERERFRPTGRIiIiIiIiqicmUkRERERERPXERIqIiIiIiKiemEgRERERERHVExMpIiIiIiKiemIiRUREREREVE9MpIioTrZu3QpnZ2fI5XLI5XIolUp8++23YnlxcTECAwPRuXNnmJqawt/fH7m5uTrbyM7Oho+PDzp06ABLS0ssWrQI5eXlOjHJycl45ZVXIJPJ4ODggJiYmKY4PCIiIqJ6adfcFaBnq6ysxN27d9GxY0cYGBg0d3XqRBAEPHz4EDY2NjA0bL35eks7N3/kvHTr1g0ffPABXnrpJQiCgB07dmDs2LG4fPky+vTpg+DgYMTHx2Pv3r0wMzNDUFAQ/Pz8cObMGQBARUUFfHx8oFAocPbsWeTk5GDq1Klo3749Vq9eDQDIysqCj48P5s6di127diEpKQmzZs2CtbU1VCpVneva0s4L0Da+Mzwv+qulnRueF/3VFs4NzwuJBNJ7d+7cEQC0yOXOnTvN/fE1qpZ6bhrqvHTq1En49NNPhfz8fKF9+/bC3r17xbLr168LAISUlBRBEATh0KFDgqGhoaBWq8WYrVu3CnK5XCgpKREEQRAWL14s9OnTR2cf48ePF1QqVb3q1VLPS2v/zvC86K+Wem54XvR3ac3nhueFtNgi1QJ07NgRAHDnzh3I5fJmrk3daDQa2NrainVvrVrauWmo81JRUYG9e/eiqKgISqUSqampKCsrg6en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", "text/plain": [ "" ] }, "execution_count": 10, "metadata": { "image/png": { "height": 425, "width": 850 } }, "output_type": "execute_result" } ], "source": [ "#| label: fig-routes-dst\n", "#| fig-cap: \"Distribution of the quantitative columns of the routes shapefile.\"\n", "px = 1/plt.rcParams['figure.dpi']\n", "fig, ax = plt.subplots(figsize=(conf.env.figures.width*px,conf.env.figures.width*px*0.5))\n", "routes.plot(kind='box', subplots=True, sharey=False, widths=0.5, ax=ax,\n", " title='Routes information distribution')\n", "plt.subplots_adjust(wspace=1.3)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-routes-dst.png\")\n", "plt.savefig(fpath)\n", "plt.close()\n", "Image(fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.5)" ] }, { "cell_type": "markdown", "id": "3acbec2a-a1e0-4f95-807c-878126bc9073", "metadata": {}, "source": [ "Visualize if some routes are out of the regional bounds" ] }, { "cell_type": "code", "execution_count": 11, "id": "e997f5f9-cee8-4d55-8cda-d7bac327f5fe", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-routes-out\n", "#| fig-cap: \"Exploratory analysis of in- and out-of-bounds routes.\"\n", "raster = data.merge_rasters(conf.dem.path, conf.dem.tiles, resolution=conf.dem.downsampling)\n", "routes = routes.to_crs(raster.rio.crs)\n", "routes = data.add_raster_coords(routes, raster.rio.transform)\n", "reg = data.add_raster_coords(reg, raster.rio.transform, area=True)\n", "fig = plot.plot_routes_bounds(np.array(raster[0]), reg, routes)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-routes-out.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.84)" ] }, { "cell_type": "markdown", "id": "839a4493-841b-48da-8517-2390d176e3c4", "metadata": {}, "source": [ "## Data Preprocessing" ] }, { "cell_type": "code", "execution_count": 12, "id": "2907ff9e-7f4a-42e2-96c2-2b0d98132216", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "if conf.env.prepare_data:\n", " # Merge tiles into unique raster and downsample\n", " raster = data.merge_rasters(conf.dem.path, conf.dem.tiles, resolution=conf.dem.downsampling)\n", " # Get regional (provincial) boundaries\n", " reg = gpd.read_file(os.path.join(conf.boundaries.path.root, conf.boundaries.path.shp))\n", " reg = reg.to_crs(raster.rio.crs)\n", " reg = reg.loc[reg.DEN_UTS.str.lower().str.contains(str(conf.boundaries.region).lower())]\n", " # Clip raster to region boundaries\n", " # raster = raster.rio.clip(reg.geometry.values, reg.crs)\n", " # Save raster\n", " raster.rio.to_raster(conf.dem.output)\n", " # Routes preparation\n", " routes = gpd.read_file(conf.routes.path)\n", " routes = routes.to_crs(raster.rio.crs)\n", " # Extract rows and columns coordinates of each point in the line\n", " routes['coords'] = routes['geometry'].apply(lambda x: x.coords.xy)\n", " routes['row'], routes['col'] = zip(*routes['coords'].apply(\n", " lambda x: rio.transform.rowcol(raster.rio.transform(), x[0], x[1])))\n", " routes = routes.drop(['coords'], axis=1)\n", " # Do the same for the region\n", " reg['coords'] = reg['geometry'].apply(lambda x: x.boundary.coords.xy)\n", " reg['row'], reg['col'] = zip(*reg['coords'].apply(\n", " lambda x: rio.transform.rowcol(raster.rio.transform(), x[0], x[1])))\n", " reg = reg.drop(['coords'], axis=1)\n", " # Take routes only inside region of interest\n", " routes = routes[routes.within(reg.geometry.values[0])]\n", " routes.to_parquet(conf.routes.output)\n", " reg.to_parquet(conf.boundaries.output)" ] }, { "cell_type": "markdown", "id": "b7e98cfc-8598-4d8e-89fe-481e05fec89f", "metadata": {}, "source": [ "**NOTE:** routes modified dataset must be released under ODbL!" ] }, { "cell_type": "code", "execution_count": 13, "id": "0b048cb1-ad86-41c1-91fc-0094b25c45ec", "metadata": {}, "outputs": [], "source": [ "raster = rio.open(conf.dem.output)\n", "dem = raster.read(1)\n", "transform = raster.transform\n", "crs = raster.crs\n", "routes = gpd.read_parquet(conf.routes.output)\n", "reg = gpd.read_parquet(conf.boundaries.output)" ] }, { "cell_type": "code", "execution_count": 14, "id": "745ee5bd-0c94-4d9b-9a7b-c38bab6555f6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# #| label: fig-routes-proc\n", "# #| fig-cap: \"Exploratory analysis of in- and out-of-bounds routes.\"\n", "fig = plot.plot_routes_processed(dem, reg, routes)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-routes-proc.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.84)" ] }, { "cell_type": "markdown", "id": "1ab85200-8055-411e-b66a-5409da6e2cad", "metadata": {}, "source": [ "## Peaks detection" ] }, { "cell_type": "code", "execution_count": 15, "id": "e450f787-24b8-443f-ada1-194b2b8b8803", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-compare\n", "#| fig-cap: >\n", "#| Comparison of the peaks detection procedure with different parameters\n", "fig = plot.plot_peaks_compare(dem, reg, transform, crs, sizes=[10,50], thresholds=[1000, 2500], )\n", "fpath = os.path.join(conf.env.figures.path, \"fig-compare.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*1)" ] }, { "cell_type": "markdown", "id": "1d92f54e-ca85-43d5-ab19-e9e51ebc8831", "metadata": {}, "source": [ "organize peaks and metadata inside a geodataframe:\n", "* longitude and latitude\n", "* raster row and column\n", "* peaks names (OSM Overpass API lookup)\n", "* check if inside region of interest" ] }, { "cell_type": "code", "execution_count": 16, "id": "0d01b54c-f066-4d76-a846-7c2e36c46604", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5c5edad6220d44b6a88fe45b2ce0d282", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/253 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rowcolelevationnamegeometryinside
007702663.331055Wetterspitze - Cima del TempoPOINT (677000.000 5200000.000)False
108992354.733887Riedspitze - Cima NovalePOINT (689900.000 5200000.000)False
2010872734.199951Schwarze Riffl - Scoglio NeroPOINT (708700.000 5200000.000)False
3012022503.150879Speikboden - Monte SpicoPOINT (720200.000 5200000.000)False
4013913423.681885Hochgall - Monte CollaltoPOINT (739100.000 5200000.000)False
.....................
24814102401577.568970Monte PizzocoloPOINT (624000.000 5059000.000)False
2491424121268.843994Dosso GialloPOINT (601200.000 5057600.000)False
2501457161214.766968Monte TeclePOINT (601600.000 5054300.000)False
2511495421165.973999Dosso del LupoPOINT (604200.000 5050500.000)False
25214954601103.145996NonePOINT (646000.000 5050500.000)False
\n", "

253 rows × 6 columns

\n", "" ], "text/plain": [ " row col elevation name \\\n", "0 0 770 2663.331055 Wetterspitze - Cima del Tempo \n", "1 0 899 2354.733887 Riedspitze - Cima Novale \n", "2 0 1087 2734.199951 Schwarze Riffl - Scoglio Nero \n", "3 0 1202 2503.150879 Speikboden - Monte Spico \n", "4 0 1391 3423.681885 Hochgall - Monte Collalto \n", ".. ... ... ... ... \n", "248 1410 240 1577.568970 Monte Pizzocolo \n", "249 1424 12 1268.843994 Dosso Giallo \n", "250 1457 16 1214.766968 Monte Tecle \n", "251 1495 42 1165.973999 Dosso del Lupo \n", "252 1495 460 1103.145996 None \n", "\n", " geometry inside \n", "0 POINT (677000.000 5200000.000) False \n", "1 POINT (689900.000 5200000.000) False \n", "2 POINT (708700.000 5200000.000) False \n", "3 POINT (720200.000 5200000.000) False \n", "4 POINT (739100.000 5200000.000) False \n", ".. ... ... \n", "248 POINT (624000.000 5059000.000) False \n", "249 POINT (601200.000 5057600.000) False \n", "250 POINT (601600.000 5054300.000) False \n", "251 POINT (604200.000 5050500.000) False \n", "252 POINT (646000.000 5050500.000) False \n", "\n", "[253 rows x 6 columns]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: tbl-peaks\n", "#| echo: false\n", "#| tbl-cap: Computed GeoDataFrame of detected peaks, including georeferences and metadata.\n", "peaks" ] }, { "cell_type": "markdown", "id": "0f5d6b01-c3c2-4b2d-bc81-7631bf3be83d", "metadata": {}, "source": [ "visualize which peaks are inside the region of interest" ] }, { "cell_type": "code", "execution_count": 18, "id": "67931bc2-1ffb-4e4c-a434-1019a3a240eb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-peaks\n", "#| echo: false\n", "#| fig-cap: >\n", "#| Labelled mountaintops detected with parameters\n", "#| `size=50` and `threshold=1000`\n", "fig = plot.plot_peaks(dem, peaks, reg)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-peaks.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.84)" ] }, { "cell_type": "markdown", "id": "15ba3c54-0908-487c-9960-3160dd7ce7d6", "metadata": {}, "source": [ "## Visibility Network" ] }, { "cell_type": "code", "execution_count": 19, "id": "f9165d3a-3ae1-4482-8147-03df735e1609", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.3 s, sys: 250 ms, total: 5.55 s\n", "Wall time: 5.33 s\n" ] } ], "source": [ "%%time\n", "G = geo.compute_visibility_network(dem, peaks, crs, transform)" ] }, { "cell_type": "code", "execution_count": 20, "id": "38691173-2915-4d0a-8637-54a48bd97314", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-pvn-anim\n", "#| echo: false\n", "#| fig-cap: >\n", "#| Peaks Visibility Network showing visibility for each peak.\n", "#| The size of the nodes is their degree, the color is their visibility score. \n", "ani, fig = plot.plot_visibility_network(\n", " G, peaks, dem, reg,\n", " width=conf.env.figures.width*.8,\n", " height=conf.env.figures.width*0.84*0.8)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-pvn-anim.html\")\n", "ani.save(filename=fpath, writer=\"html\")\n", "plt.close(fig)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.84)" ] }, { "cell_type": "code", "execution_count": 21, "id": "f516fad7-a53d-4955-ac49-c61843eacfba", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
nameelevationscore
153Cima Presanella3551.85400443982.139194
90Punta Penia3342.74902340791.724952
158Cima Brenta3152.94995140791.724952
162Cima Tosa3162.95507838512.857636
96Monte Cevedale3763.04394537145.537247
165Anticima di Monte Fumo3433.21801836689.763784
108Cimon del Latemar - Diamantiditurm2839.96411136461.877052
155Cima d'Asta2843.67407236233.990321
240Punta di mezzodì2253.28808636006.103589
233Cima Palon2232.78491235094.556663
\n", "
" ], "text/plain": [ " name elevation score\n", "153 Cima Presanella 3551.854004 43982.139194\n", "90 Punta Penia 3342.749023 40791.724952\n", "158 Cima Brenta 3152.949951 40791.724952\n", "162 Cima Tosa 3162.955078 38512.857636\n", "96 Monte Cevedale 3763.043945 37145.537247\n", "165 Anticima di Monte Fumo 3433.218018 36689.763784\n", "108 Cimon del Latemar - Diamantiditurm 2839.964111 36461.877052\n", "155 Cima d'Asta 2843.674072 36233.990321\n", "240 Punta di mezzodì 2253.288086 36006.103589\n", "233 Cima Palon 2232.784912 35094.556663" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: tbl-top-peaks\n", "#| echo: false\n", "#| tbl-cap: Metadata of the most panoramic mountaintops.\n", "peaks['score'] = [np.sum([\n", " d['weight'] for u, v, d in G.edges(node, data=True)\n", "]) for node in G.nodes()]\n", "peaks[peaks.inside].sort_values(\"score\", ascending=False)[:10][[\"name\", 'elevation', 'score']]" ] }, { "cell_type": "code", "execution_count": 22, "id": "176a3a75-8002-4856-a443-411e84322465", "metadata": {}, "outputs": [ { "data": { "image/png": "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6U9/Yu7cuTidTn7+85/zwx/+kOrqak4//fT4vpdvfetbKIrCSy+91OHxL730EmVlZWRnZ3f5Nbn11luZM2dO/PnbvjpTVVXFGWecwX/+8x++//3v88Mf/pBdu3Zx1lln8e9//7vD+DvuuIP//Oc//OhHP2L+/Pn8/e9/5/bbbz/s69DVcwyHw5SXl/PBBx9wxx138OSTT3LLLbewc+fOdu+NQymKwlVXXcWmTZvaBakAb775Jg0NDVx99dWdPr6yspIrr7yS7Oxsfv7zn/Pwww9z1lln8a9//euw5wXQ2NjI+eefz5QpU3jkkUcYPnw48+fPP+og4Mwzz+S73/0uAPfee2/85zhhwgSuueYa9u/fz8qVK9s9pra2lrfffvuwq6cFBQVkZGTw97//nYaGhsPOQVVVLrjgAh544AGmTJnCr371K773ve/R3NzMp59+CsT2n/3Xf/0Xv/71rzn33HN59NFHGTduHHfddReLFi3qcMy3336bhQsXcvnll/P4449z7LHH4vF4mD59Om+99Ra33347jz/+OGPGjOHGG2/kscce6+YrJ4QQndCFECJFPfPMMzqgv/XWW3p9fb1eU1Ojv/DCC3pubq6ekZGhf/nll/rnn3+uG41G/Wc/+1m7x27atEk3mUztbvf7/R2e46GHHtIVRdG/+OKL+G3z5s3THQ6Hruu6/t577+kul0ufO3euHgwG42OWLVumA/qHH37Y7fOaOXOmDiT8uvXWWzuc/65du3Rd1/WWlhZ9yJAh+s0339zueLW1tXpWVla722fMmKFPmTKl3bh169bpgP7HP/6x26/JggUL9M7+yQD0H/3oR/HvL774Yt1iseg7duyI37Znzx49MzNTP/PMMzuc3+zZs3VN0+K3L1y4UDcajXpTU1PC5+vOOX788cc6oL/88suHPVYiVVVVOqAvXry43e1XXHGFbrPZ9Obm5vht8+bN00eOHBn//nvf+57ucrn0aDTa6fHfeecdHdDfeeed+G1t741f/epX8dtCoZA+adIkvaCgQA+Hw7qu6/quXbt0QH/mmWfi4370ox91+BmNHDlSnzdvXvz7l19+ucNz6rquq6qqDx8+XL/88svb3f7oo4/qiqLoO3fu7PQ8dF3X77//fh3QHQ6Hft555+k/+9nP9PXr13cY93//9386oD/66KMd7mt7D/z1r3/VAf2nP/1p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MRgMXf45XX311dTV1XHrrbcSiUSOmNYHxN93bQwGQ3wV5EjPG41Gefrpp+Pfh8Nhnn76afLz85kyZUqX5tyZI/0cr7zyShRF4Xvf+x47d+7sUq8zv9/P2rVrE97Xtp+pLdXzsssuY9++fTzxxBMdxra9D88//3xUVe0w5te//jWKonDeeecddj5Go5HLLruMV199NV4J8GBHKq0vhBBdJStSQoi0VlxczE9/+lMWL17M559/zsUXX0xmZia7du1i2bJl3HLLLfzP//wP48ePp7i4mP/5n//hq6++wuVy8eqrrx5xH05GRgZvvPEG55xzDueddx5r1qzh+OOP57nnnuO3v/0tl1xyCcXFxbS0tPD73/8el8t1xLQviO0/+vOf/5zwvs4uXl0uF0899RTXXHMNJ510EldccQX5+fns3r2b5cuXc9ppp7W7+CwoKODss8/m0UcfpaWlhcsvv7zd8brzmrRdwH/3u9+lvLwco9EYb0Z7qJ/+9KdUVlZy+umn853vfAeTycTTTz9NKBTikUceOeJr0x1HOse3336b22+/nW9+85uMHTuWaDTKn/70p/jFdldcdtllfOc73+H111+nqKiIM88884iPuemmm2hoaOCcc85h+PDhfPHFF/zmN79h0qRJ8b0+nRk2bBg///nP+fzzzxk7diwvvvgiGzdu5He/+12PGv8ebNKkSRiNRn7+85/T3NyM1WrlnHPOifd6ys/P59xzz+Xll19myJAhzJ0794jH9Pv9nHrqqUyfPp1zzz2XoqIimpqa+Otf/8o///lPLr74YiZPngzEVrz++Mc/smjRItatW8cZZ5yBz+fjrbfe4jvf+Q4XXXQRF154IWeffTY/+MEP+PzzzznxxBOpqKjg9ddf584774yvzB7Oww8/zDvvvMO0adO4+eabKSkpoaGhgQ0bNvDWW28dsUy7EEJ0SV+XCRRCiK5qK4/dlRLjr776qn766afrDodDdzgc+vjx4/UFCxboW7dujY+prq7WZ8+erTudTj0vL0+/+eab9f/85z8dykgfXP68zb59+/SSkhK9sLBQ/+yzz/QNGzboV155pT5ixAjdarXqBQUF+gUXXKB/9NFHR5zr4cqfH/xn+dDy523eeecdvby8XM/KytJtNpteXFysX3fddQmf+/e//70O6JmZmXogEOhwf1dfk2g0qt9xxx16fn6+rihKu3lySPlzXdf1DRs26OXl5brT6dTtdrt+9tln6++//367MZ39fBOVBT+cw53jzp079RtuuEEvLi7WbTabnpOTo5999tn6W2+91aVjt/nmN7+pA/r3v//9hPcfWv78lVde0cvKyvSCggLdYrHoI0aM0G+99VZ97969hz3PmTNn6qWlpfpHH32kz5gxQ7fZbPrIkSP1J554ot3z9bT8ua7HXq/Ro0frRqMx4ev80ksv6YB+yy23HPmF0XU9Eonov//97/WLL75YHzlypG61WnW73a5PnjxZ/8UvfqGHQqF24/1+v/6DH/xAHzVqlG42m/XCwkL9G9/4Rrty+S0tLfrChQv1YcOG6WazWT/uuOP0X/ziF+3K5Ot67L23YMGChPPyeDz6ggUL9KKiovjzzJo1S//d737XpfMSQogjUXT9CLt5hRBCCDFovP7661x88cW8++67nHHGGf09HSGESFkSSAkhhBAi7oILLmDz5s1s3769y0VGhBBiMJI9UkIIIYTghRde4JNPPmH58uU8/vjjEkQJIcQRyIqUEEIIIVAUBafTyeWXX86SJUsO2zRXCCGErEgJIYQQgiM3QBZCCNGe9JESQgghhBBCiG6SQEoIIYQQQgghuklS+9KApmns2bOHzMxM2fwrhBBCCCG6Rdd1WlpaGDZsGAaDrKMkiwRSaWDPnj0UFRX19zSEEEIIIUQaq6mpYfjw4f09jQFDAqk0kJmZCcTe/C6Xq59nI4QQQggh0onX66WoqCh+TSmSQwKpNNCWzudyuSSQEkIIIYQQPSJbRJJrUCRJPvzwwyiKwp133hm/7ayzzkJRlHZft912W7vH7d69m7lz52K32ykoKOCuu+4iGo22G7N69WpOOukkrFYrY8aM4dlnn+3w/E8++STHHnssNpuNadOmsW7dut44TSGEEEIIIUQfGfCB1IcffsjTTz/NCSec0OG+m2++mb1798a/Hnnkkfh9qqoyd+5cwuEw77//Ps899xzPPvss999/f3zMrl27mDt3LmeffTYbN27kzjvv5KabbmLlypXxMS+++CKLFi3iRz/6ERs2bODEE0+kvLycurq63j1xIYQQQgghRK8Z0IFUa2srV199Nb///e/Jzs7ucL/dbqewsDD+dXDaXEVFBdXV1fz5z39m0qRJnHfeefzv//4vTz75JOFwGIAlS5YwatQofvWr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5BOxZs0a8dFHHwkAYsuWLX7Hf/WrX4moqCixdetW8fXXX4sf//jHIjU1VTQ1Nakx06ZNEyNHjhT79+8X//znP0VaWpqYO3euery+vl5YLBYxb948cezYMfH+++8Lo9Eofv/733fVZfZYN+q/+fPni2nTpomqqir1p7a21i+G/dd98vLyxDvvvCOOHTsmioqKxPTp00X//v2F3W5XY5544gmRkpIidu7cKQ4dOiTGjRsnxo8frx73eDxi2LBhYsqUKeLIkSPik08+EXFxceL5559XY7755hthMpnE8uXLRWlpqfjtb38rNBqN2L59e5deb09zM/2Xk5MjFi5c6HcP1tfXq8fZf93n73//u9i2bZs4efKkOHHihFi9erXQarXi2LFjQgjee6HgRn3I+496IiZSQeraB3FFUURiYqL4r//6L/W1uro6odfrxfvvvy+EEKK0tFQAEAcPHlRjPv30UyFJkvjuu++EEEK89dZbIiYmRjidTjVm1apVYsiQIZ18Rb1LW4nUT37ykzbfw/4LLjU1NQKAKCgoEEK03G9arVZ8+OGHakxZWZkAIAoLC4UQLcm0LMvCarWqMRs2bBBms1nts2effVZkZWX5fdZDDz0k8vLyOvuSepVr+0+Ilge5p556qs33sP+CS0xMjHj77bd574UwXx8KwfuPeiZO7QsRlZWVsFqtmDJlivpaVFQUxo4di8LCQgBAYWEhoqOjcdddd6kxU6ZMgSzLOHDggBpz3333QafTqTF5eXk4ceIELl++3EVX03vt2bMHCQkJGDJkCBYvXoxLly6px9h/waW+vh4AEBsbCwA4fPgw3G633z04dOhQ9O/f3+8eHD58OCwWixqTl5cHm82GkpISNebqc/hifOegjnFt//m89957iIuLw7Bhw/D888/D4XCox9h/wcHr9eKDDz5AY2MjsrOzee+FoGv70If3H/U0Yd3dALo5VqsVAPz+A+P73XfMarUiISHB73hYWBhiY2P9YlJTU1udw3csJiamU9pPwLRp0/Dggw8iNTUVFRUVWL16Ne6//34UFhZCo9Gw/4KIoih4+umnMWHCBAwbNgxAy/er0+kQHR3tF3vtPRjoHvUdu16MzWZDU1MTjEZjZ1xSrxKo/wDg4YcfxoABA5CcnIyjR49i1apVOHHiBD766CMA7L/uVlxcjOzsbDQ3NyMiIgJbtmxBZmYmioqKeO+FiLb6EOD9Rz0TEymiLjJnzhz138OHD8eIESMwaNAg7NmzB5MnT+7GltG1lixZgmPHjmHv3r3d3RS6BW3136JFi9R/Dx8+HElJSZg8eTIqKiowaNCgrm4mXWPIkCEoKipCfX09/vrXv2L+/PkoKCjo7mZRO7TVh5mZmbz/qEfi1L4QkZiYCACtqhRVV1erxxITE1FTU+N33OPxoLa21i8m0Dmu/gzqGgMHDkRcXBzKy8sBsP+CxdKlS/Hxxx9j9+7d6Nevn/p6YmIiXC4X6urq/OKvvQdv1D9txZjNZv7f1A7QVv8FMnbsWADwuwfZf91Hp9MhLS0NY8aMwbp16zBy5EisX7+e914IaasPA+H9Rz0BE6kQkZqaisTEROzcuVN9zWaz4cCBA+r84+zsbNTV1eHw4cNqzK5du6AoivofrOzsbHzxxRdwu91qTH5+PoYMGcJpYV3s3LlzuHTpEpKSkgCw/7qbEAJLly7Fli1bsGvXrlZTKMeMGQOtVut3D544cQJnzpzxuweLi4v9EuL8/HyYzWZ1ekt2drbfOXwxV68joPa7Uf8FUlRUBAB+9yD7L3goigKn08l7L4T5+jAQ3n/UI3R3tQv6XkNDgzhy5Ig4cuSIACB+85vfiCNHjohvv/1WCNFS/jw6Olr87W9/E0ePHhU/+clPApY/v/POO8WBAwfE3r17RXp6ul/57Lq6OmGxWMQjjzwijh07Jj744ANhMplYPrsDXK//GhoaxIoVK0RhYaGorKwUn3/+uRg9erRIT08Xzc3N6jnYf91n8eLFIioqSuzZs8evPK/D4VBjnnjiCdG/f3+xa9cucejQIZGdnS2ys7PV477yvbm5uaKoqEhs375dxMfHByzfu3LlSlFWViZ+97vfsXxvB7hR/5WXl4tXX31VHDp0SFRWVoq//e1vYuDAgeK+++5Tz8H+6z7PPfecKCgoEJWVleLo0aPiueeeE5IkiR07dggheO+Fguv1Ie8/6qmYSAWR3bt3CwCtfubPny+EaCmB/uKLLwqLxSL0er2YPHmyOHHihN85Ll26JObOnSsiIiKE2WwWjz76qGhoaPCL+frrr8W9994r9Hq96Nu3r/jVr37VVZfYo12v/xwOh8jNzRXx8fFCq9WKAQMGiIULF/qVeRWC/dedAvUdAPHOO++oMU1NTeLf//3fRUxMjDCZTGLWrFmiqqrK7zynT58W999/vzAajSIuLk4888wzwu12+8Xs3r1bjBo1Suh0OjFw4EC/z6Bbc6P+O3PmjLjvvvtEbGys0Ov1Ii0tTaxcudJvHxsh2H/d5bHHHhMDBgwQOp1OxMfHi8mTJ6tJlBC890LB9fqQ9x/1VJIQQnTd+BcREREREVHo4xopIiIiIiKidmIiRURERERE1E5MpIiIiIiIiNqJiRQREREREVE7MZEiIiIiIiJqJyZSRERERERE7cREioiIiIiIqJ2YSBEREREREbUTEykiIuoSe/bsgSRJqKur6+6m4OWXX8aoUaO6uxlERBTCmEgREVGPJkkStm7d6vfaihUrsHPnzu5pEBER9Qhh3d0AIiKirhYREYGIiIjubgYREYUwjkgREVGHURQF69atQ2pqKoxGI0aOHIm//vWvbcbv3bsXEydOhNFoREpKCp588kk0NjYCAFavXo2xY8e2es/IkSPx6quvAgAOHjyIqVOnIi4uDlFRUcjJycFXX32lxt5xxx0AgFmzZkGSJPX3a6f2KYqCV199Ff369YNer8eoUaOwfft29fjp06chSRI++ugjTJo0CSaTCSNHjkRhYeGtflVERBTimEgREVGHWbduHf74xz9i48aNKCkpwbJly/Czn/0MBQUFrWIrKiowbdo0zJ49G0ePHsWf//xn7N27F0uXLgUAzJs3D//6179QUVGhvqekpARHjx7Fww8/DABoaGjA/PnzsXfvXuzfvx/p6emYPn06GhoaALQkWgDwzjvvoKqqSv39WuvXr8frr7+O//7v/8bRo0eRl5eHH//4xzh16pRf3Jo1a7BixQoUFRVh8ODBmDt3Ljwez+1/cUREFHIkIYTo7kYQEVHoczqdiI2Nxeeff47s7Gz19ccffxwOhwOLFi3CpEmTcPnyZURHR+Pxxx+HRqPB73//ezV27969yMnJQWNjIwwGA0aNGoXZs2fjxRdfBNAySrVr1y7s378/YBsURUF0dDQ2b96MBx54AEDLGqktW7Zg5syZatzLL7+MrVu3oqioCADQt29fLFmyBKtXr1Zj7rnnHtx999343e9+h9OnTyM1NRVvv/02FixYAAAoLS1FVlYWysrKMHTo0A75DomIKHRwRIqIiDpEeXk5HA4Hpk6dqq5BioiIwB//+Ee/USWfr7/+Gps2bfKLzcvLg6IoqKysBNAyKrV582YAgBAC77//PubNm6eeo7q6GgsXLkR6ejqioqJgNptht9tx5syZm263zWbD+fPnMWHCBL/XJ0yYgLKyMr/XRowYof47KSkJAFBTU3PTn0VERD0Hi00QEVGHsNvtAIBt27ahb9++fsf0en2rZMput+PnP/85nnzyyVbn6t+/PwBg7ty5WLVqFb766is0NTXh7NmzeOihh9S4+fPn49KlS1i/fj0GDBgAvV6P7OxsuFyujr48AIBWq1X/LUkSgJZRMCIi6n2YSBERUYfIzMyEXq/HmTNnkJOT0+r4tYnU6NGjUVpairS0tDbP2a9fP+Tk5OC9995DU1MTpk6dioSEBPX4l19+ibfeegvTp08HAJw9exYXL170O4dWq4XX623zM8xmM5KTk/Hll1/6tfvLL7/EPffcc/2LJiKiXouJFBERdYjIyEisWLECy5Ytg6IouPfee1FfX48vv/wSZrMZAwYM8ItftWoVxo0bh6VLl+Lxxx9HeHg4SktLkZ+fj//5n/9R4+bNm4eXXnoJLpcLb7zxht850tPT8ac//Ql33XUXbDYbVq5cCaPR6Bdzxx13YOfOnZgwYQL0ej1iYmJatX3lypV46aWXMGjQIIwaNQrvvPMOioqK8N5773XgN0RERD0J10gREVGH+cUvfoEXX3wR69atQ0ZGBqZNm4Zt27YhNTW1VeyIESNQUFCAkydPYuLEibjzzjuxdu1aJCcn+8X99Kc/xaVLl+BwOPwKRgDA//7v/+Ly5csYPXo0HnnkETz55JN+I1YA8PrrryM/Px8pKSm48847A7b7ySefxPLly/HMM89g+PDh2L59O/7+978jPT399r4QIiLqsVi1j4iIiIiIqJ04IkVERERERNROTKSIiIiIiIjaiYkUERERERFROzGRIiIiIiIiaicmUkRERERERO30/wFxP+MY2sixuwAAAABJRU5ErkJggg==", "text/plain": [ "" ] }, "execution_count": 22, "metadata": { "image/png": { "height": 297.5, "width": 595 } }, "output_type": "execute_result" } ], "source": [ "#| label: fig-elevation-score\n", "#| echo: false\n", "#| fig-cap: >\n", "#| Correlation visualization between mountaintops elevation and their visibility score.\n", "px = 1/plt.rcParams['figure.dpi']\n", "fig, ax = plt.subplots(figsize=(conf.env.figures.width*px,conf.env.figures.width*0.5*px))\n", "ax.set_title('Peaks Elevation vs Visibility Score')\n", "sns.regplot(peaks[peaks.inside], x='elevation', y='score')\n", "fpath = os.path.join(conf.env.figures.path, \"fig-elevation-score.png\")\n", "plt.savefig(fpath)\n", "plt.close()\n", "Image(fpath, width=conf.env.figures.width*.7, height=conf.env.figures.width*0.5*.7)" ] }, { "cell_type": "markdown", "id": "85255e0f-5d64-4192-8bf3-0963bce41e21", "metadata": {}, "source": [ "## Routes Visibility Analysis" ] }, { "cell_type": "code", "execution_count": 23, "id": "25617e62-8b60-4611-a520-ce2efe0d67d9", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "07c0c66bdecc41749ee9b6323b251b34", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/984 [00:00\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
numerodenominazgr_montpanorama_score_weightedcompetenzadifficoltaloc_inizioloc_finequota_inizquota_finequota_minquota_maxlun_planimlun_inclint_andatat_ritornocomuni_tocpanorama_score
483E646NoneMARMOLADA / Colac' - Bufaure - L'Aut3.862061SEZ. SAT ALTA VAL DI FASSAEVAL DE CONTRINpr. FORCIA NEIGRA17712486177124542030217002:0001:30CANAZEI-CIANACEI7.821029
95E207VIA FERRATA \"GIUSEPPE HIPPOLITI\"CIMA DODICI - ORTIGARA3.447369SEZ. SAT BORGO VALSUGANA, SEZ. SAT LEVICOEEA-FSELLA - località GenzianellaALTOPIANO902195090219706480678003:1502:20BORGO VALSUGANA, LEVICO TERME22.345980
297E157ASENTIERO \"ALBERTO GRESELE\"CARÉGA - PICCOLE DOLOMITI3.401106SEZ. SAT VALLARSAEMALGA STORTAQUOTA 160113441601134416011120117000:5500:30VALLARSA3.816173
192E207ASENTIERO DELLA GROTTA DI COSTALTACIMA DODICI - ORTIGARA3.089812SEZ. SAT BORGO VALSUGANAESPIGOLO DI COSTALTAGROTTA DI COSTALTA165216881652170222024000:1000:05BORGO VALSUGANA0.689643
420E322CNoneLAGORAI / Costalta - Croce, LAGORAI / Mànghen ...2.997636SEZ. SAT BORGO VALSUGANAEMALGA VALSOLÈRO DI SOPRAPASSO DEL MÀNGHEN17472043174620451600164000:5000:40TELVE4.799935
\n", "" ], "text/plain": [ " numero denominaz \\\n", "483 E646 None \n", "95 E207 VIA FERRATA \"GIUSEPPE HIPPOLITI\" \n", "297 E157A SENTIERO \"ALBERTO GRESELE\" \n", "192 E207A SENTIERO DELLA GROTTA DI COSTALTA \n", "420 E322C None \n", "\n", " gr_mont \\\n", "483 MARMOLADA / Colac' - Bufaure - L'Aut \n", "95 CIMA DODICI - ORTIGARA \n", "297 CARÉGA - PICCOLE DOLOMITI \n", "192 CIMA DODICI - ORTIGARA \n", "420 LAGORAI / Costalta - Croce, LAGORAI / Mànghen ... \n", "\n", " panorama_score_weighted competenza \\\n", "483 3.862061 SEZ. SAT ALTA VAL DI FASSA \n", "95 3.447369 SEZ. SAT BORGO VALSUGANA, SEZ. SAT LEVICO \n", "297 3.401106 SEZ. SAT VALLARSA \n", "192 3.089812 SEZ. SAT BORGO VALSUGANA \n", "420 2.997636 SEZ. SAT BORGO VALSUGANA \n", "\n", " difficolta loc_inizio loc_fine quota_iniz \\\n", "483 E VAL DE CONTRIN pr. FORCIA NEIGRA 1771 \n", "95 EEA-F SELLA - località Genzianella ALTOPIANO 902 \n", "297 E MALGA STORTA QUOTA 1601 1344 \n", "192 E SPIGOLO DI COSTALTA GROTTA DI COSTALTA 1652 \n", "420 E MALGA VALSOLÈRO DI SOPRA PASSO DEL MÀNGHEN 1747 \n", "\n", " quota_fine quota_min quota_max lun_planim lun_inclin t_andata \\\n", "483 2486 1771 2454 2030 2170 02:00 \n", "95 1950 902 1970 6480 6780 03:15 \n", "297 1601 1344 1601 1120 1170 00:55 \n", "192 1688 1652 1702 220 240 00:10 \n", "420 2043 1746 2045 1600 1640 00:50 \n", "\n", " t_ritorno comuni_toc panorama_score \n", "483 01:30 CANAZEI-CIANACEI 7.821029 \n", "95 02:20 BORGO VALSUGANA, LEVICO TERME 22.345980 \n", "297 00:30 VALLARSA 3.816173 \n", "192 00:05 BORGO VALSUGANA 0.689643 \n", "420 00:40 TELVE 4.799935 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: tbl-top-routes\n", "#| echo: false\n", "#| tbl-cap: Metadata of the most panoramic routes.\n", "routes.sort_values(by='panorama_score_weighted', ascending=False)[:5][[\n", " 'numero', 'denominaz', 'gr_mont', 'panorama_score_weighted',\n", " 'competenza', 'difficolta', 'loc_inizio',\n", " 'loc_fine', 'quota_iniz', 'quota_fine',\n", " 'quota_min', 'quota_max', 'lun_planim',\n", " 'lun_inclin', 't_andata', 't_ritorno', \n", " 'comuni_toc', 'panorama_score']]" ] }, { "cell_type": "code", "execution_count": 26, "id": "cafadc59-ae05-497b-9dd0-fa77e733f60f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-routes-compare\n", "#| fig-cap: >\n", "#| Comparison between a raw LineString route (left) from the trails shapefile,\n", "#| and its rasterized version (right).\n", "rasterized = rio.features.rasterize(routes.geometry, out_shape=dem.shape,\n", " transform=transform, fill=0)\n", "fig = plot.plot_routes_compare(dem, routes, rasterized)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-routes-compare.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.6)" ] }, { "cell_type": "code", "execution_count": 27, "id": "215fbad2-89b6-4655-b6c4-6a44b0a59e66", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#| label: fig-top-routes\n", "#| echo: false\n", "#| fig-cap: >\n", "#| Labelled mountaintops detected with parameters\n", "#| `size=50` and `threshold=1000`\n", "fig = plot.plot_routes_result(dem, peaks, reg, routes)\n", "fpath = os.path.join(conf.env.figures.path, \"fig-routes-result.html\")\n", "fig.write_html(fpath)\n", "IFrame(src=fpath, width=conf.env.figures.width, height=conf.env.figures.width*0.75)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }