{ "cells": [ { "cell_type": "markdown", "id": "2b74d3b0", "metadata": {}, "source": [ "# 💻 Geopandas: en introduksjon\n", "\n", "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/GMGI221-2024/forelesninger/blob/main/04_geopandas.ipynb)\n", "\n", "I denne seksjonen vil vi dekke det grunnleggende med *geopandas*, et Python-bibliotek for\n", "å samhandle med romlig vektordata.\n", "\n", "[Geopandas](https://geopandas.org/) gir et brukervennlig grensesnitt til vektordatasett. Det kombinerer mulighetene til *pandas*\n", "med geometrikapabilitetene til\n", "[shapely](#02_geometriske_objekter), [romlig-filformateringstøtte\n", "fra fiona](#03_vektor) og kartprojeksjonsbibliotekene til\n", "pyproj(som vi ser på neste uke).\n", "\n", "Hoveddatastrukturene i geopandas er `GeoDataFrame`s og `GeoSeries`. De\n", "utvider funksjonaliteten til `pandas.DataFrame`s og `pandas.Series`.\n", "\n", "Det er en nøkkelforskjell mellom pandas dataframes og geopandas\n", "[`GeoDataFrame`s](https://geopandas.org/en/stable/docs/user_guide/data_structures.html#geodataframe):\n", "en `GeoDataFrame` inneholder en ekstra kolonne for geometrier. Som standard er\n", "navnet på denne kolonnen `geometry`, og det er en\n", "[`GeoSeries`](https://geopandas.org/en/stable/docs/user_guide/data_structures.html#geoseries)\n", "som inneholder geometrier (punkter, linjer, polygoner, ...) som\n", "`shapely.geometry` objekter." ] }, { "cell_type": "code", "execution_count": 7, "id": "746d2668", "metadata": { "tags": [ "remove-input" ] }, "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", "
 klasseklasse_navngeometry
0100myrPOLYGON ((265791.9 6614994.65, 265790.18 6614997.81, 265754.58 6614993.01, 265738.37 6614991.46, 265714.54 6614994.62, 265703.4 6614982.57, 265700.51 6614972.78, 265701.87 6614965.64, 265710.39 6614959.84, 265729.32 6614969.17, 265751.33 6614968.19, 265785.92 6614984.13, 265791.9 6614994.65))
1100myrPOLYGON ((262206.27 6628558.13, 262202.64 6628562.47, 262192.59 6628562.38, 262186.79 6628553.87, 262184.71 6628541.99, 262186.07 6628534.84, 262203.19 6628524.25, 262221.22 6628523.61, 262226.47 6628526.15, 262228.92 6628530.96, 262206.27 6628558.13))
2100myrPOLYGON ((265299.88 6621504.12, 265294.08 6621506.65, 265285.92 6621505.38, 265279.41 6621499.96, 265258.39 6621467.69, 265255.05 6621452.93, 265249.89 6621440.33, 265246.07 6621431.63, 265248.72 6621416.33, 265254.7 6621404.73, 265266.02 6621407.73, 265282.23 6621420.33, 265283.68 6621436.27, 265279.24 6621453.75, 265279.41 6621466.79, 265286.29 6621476.22, 265302.59 6621489.81, 265305.31 6621497.61, 265299.88 6621504.12))
3100myrPOLYGON ((260561.58 6622897.2, 260562.11 6622914.23, 260560.03 6622913.41, 260555.41 6622906.79, 260551.79 6622889.04, 260553.52 6622874.82, 260562.58 6622841.85, 260572.46 6622817.84, 260581.88 6622810.96, 260603.45 6622805, 260613.4 6622804.08, 260626.36 6622813.96, 260637.86 6622830, 260651.81 6622839.79, 260662.32 6622844.86, 260672.83 6622849.93, 260691.12 6622852.29, 260710.15 6622851.57, 260715.5 6622855.1, 260718.3 6622863.9, 260720.38 6622875.76, 260713.04 6622883.47, 260712.95 6622882.47, 260702.9 6622871.32, 260697.74 6622869.79, 260683.87 6622872.05, 260673.73 6622882.01, 260663.04 6622885.97, 260655.06 6622886.72, 260650.9 6622885.08, 260645.64 6622882.54, 260641.93 6622874.84, 260641.66 6622872.98, 260639.31 6622856.99, 260631.88 6622852.64, 260608.05 6622855.81, 260597.37 6622859.79, 260574.8 6622876.91, 260563.12 6622892.03, 260561.58 6622897.2))
4100myrPOLYGON ((265326.09 6621350.04, 265320.02 6621360.63, 265307.79 6621358.73, 265288.32 6621343.42, 265278.98 6621340.24, 265271.83 6621338.88, 265275.28 6621321.49, 265286.71 6621292.32, 265293.23 6621286.71, 265302.11 6621284.91, 265312.25 6621285.99, 265317.59 6621289.52, 265320.22 6621296.33, 265319.4 6621331.55, 265326.09 6621350.04))
\n" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pathlib\n", "import geopandas\n", "import numpy\n", "\n", "DATA_MAPPE = pathlib.Path().resolve() / \"data\"\n", "\n", "HIGHLIGHT_STYLE = \"background: #f66161;\"\n", "\n", "# så følgende blokk er litt dårlig magi for å få tabellutdataen til å se\n", "# fin ut (denne cellen er skjult, vi er bare interessert i en kort tabellisting\n", "# der geometrikolonnen er fremhevet).\n", "#\n", "# For dette, vi\n", "# 1. konverterer geopandas tilbake til en ‘normal’ pandas.DataFrame med en forkortet\n", "# WKT-streng i geometrikolonnen\n", "# 1b. samtidig som vi gjør det, blir vi kvitt de fleste av kolonnene (gir de gjenværende kolonner nye navn)\n", "# 2. bruker stilen på alle celler i kolonnen \"geometry\", og til aksen-1-indeksen \"geometry\"\n", "\n", "# Hvorfor gikk jeg via en ‘plain’ `pandas.DataFrame`?\n", "# `pandas.set_option(\"display.max_colwidth\", 40)` ble ignorert, så dette så ut som den reneste måten\n", "\n", "df = geopandas.read_file(DATA_MAPPE / \"arealdekke\" / \"ArealdekkeN50.gpkg\")\n", "\n", "df[\"geom\"] = df.geometry.to_wkt().apply(lambda wkt: wkt[:40] + \" ...\")\n", "\n", "df = df[[\"klasse\", \"klasse_navn\", \"geometry\"]]\n", "\n", "(\n", " df.head().style\n", " .map(lambda x: HIGHLIGHT_STYLE, subset=[\"geometry\"])\n", " .apply_index(lambda x: numpy.where(x.isin([\"geometry\"]), HIGHLIGHT_STYLE, \"\"), axis=1)\n", ")" ] }, { "cell_type": "markdown", "id": "bfb5bf80", "metadata": {}, "source": [ "---\n", "\n", "## Inputdata: Arealdekke over Ås kommune\n", "\n", "I denne notebooken skal vi jobbe med et modifisert datasett fra [Kartverkets N50-serie](https://www.kartverket.no/api-og-data/kartgrunnlag-fastlands-norge).\n", "\n", "Til denne notebooken har vi lastet ned Arealdekke-data og endret det noe for å passe til formålet for denne timen. Dataene er lastet ned fra [Geonorge](https://kartkatalog.geonorge.no/metadata/n50-kartdata/ea192681-d039-42ec-b1bc-f3ce04c189ac). Filen vi skal jobbe med ligger i `data/ArealdekkeN50.gpkg`.\n", "\n", "---\n", "\n", "## Les og utforsk romlig datasett\n", "\n", "Før vi prøver å laste inn noen filer, la oss ikke glemme å definere en konstant\n", "som peker til vår datamappe:" ] }, { "cell_type": "code", "execution_count": 3, "id": "a707bab1", "metadata": {}, "outputs": [], "source": [ "import pathlib \n", "NOTEBOOK_PATH = pathlib.Path().resolve()\n", "DATA_MAPPE = NOTEBOOK_PATH / \"data\"" ] }, { "cell_type": "markdown", "id": "e1edc1a4", "metadata": {}, "source": [ "I denne notebooken skal vi fokusere på arealdekke-klasser\n", "\n", "**Målet vårt i denne notebooken er å lagre alle arealdekke-klassene i separate filer**.\n", "\n", "*Arealdekke-klasser i den datasettet:*\n", "\n", "| Klasse | Navn på klasse \n", "|----------------|-----------\n", "| 100 | myr\n", "| 110 | steinbrudd\n", "| 120 | tettbebyggelse\n", "| 200 | innsjø\n", "| 300 | indstriområde\n", "| 400 | havflate\n", "| 500 | gravplass\n", "| 600 | dyrket mark\n", "| 700 | åpent område\n", "| 800 | skog\n", "| 900 | sportidrettplass\n", "\n", ":::{admonition} Søk etter filer ved hjelp av et mønster\n", ":class: hint\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "5e0779ec", "metadata": {}, "outputs": [], "source": [ "input_filename = DATA_MAPPE / \"arealdekke\" / \"ArealdekkeN50.gpkg\"\n", "data = geopandas.read_file(input_filename)" ] }, { "cell_type": "markdown", "id": "633975e4", "metadata": {}, "source": [ "Først, sjekk datatype av det leste datasettet:" ] }, { "cell_type": "code", "execution_count": 40, "id": "e1637c47", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "geopandas.geodataframe.GeoDataFrame" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(data)" ] }, { "cell_type": "markdown", "id": "c8454e5a", "metadata": {}, "source": [ "Alt gikk bra, og vi har en `geopandas.GeoDataFrame`. \n", "La oss også utforske dataene: (1) skriv ut de første få radene, og \n", "(2) list opp kolonnene." ] }, { "cell_type": "code", "execution_count": 41, "id": "21b60ec6", "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", "
gml_idoppdateringsdatoklasseklasse_navngeometry
0idd51cad71-d02b-4043-833b-8a6e50539af02016-12-02100myrPOLYGON ((265791.900 6614994.650, 265790.180 6...
1id41c8ac6e-b5ce-4657-958c-312c27dafd9a2016-12-02100myrPOLYGON ((262206.270 6628558.130, 262202.640 6...
2ide574839d-8f33-4b1e-bc44-01a865a1beb92016-12-02100myrPOLYGON ((265299.880 6621504.120, 265294.080 6...
3id2aa8beeb-8a23-4159-ae85-d218ead88c9f2016-12-02100myrPOLYGON ((260561.580 6622897.200, 260562.110 6...
4iddf0f9506-8358-49ae-bd65-b496cd4571be2016-12-02100myrPOLYGON ((265326.090 6621350.040, 265320.020 6...
\n", "
" ], "text/plain": [ " gml_id oppdateringsdato klasse \\\n", "0 idd51cad71-d02b-4043-833b-8a6e50539af0 2016-12-02 100 \n", "1 id41c8ac6e-b5ce-4657-958c-312c27dafd9a 2016-12-02 100 \n", "2 ide574839d-8f33-4b1e-bc44-01a865a1beb9 2016-12-02 100 \n", "3 id2aa8beeb-8a23-4159-ae85-d218ead88c9f 2016-12-02 100 \n", "4 iddf0f9506-8358-49ae-bd65-b496cd4571be 2016-12-02 100 \n", "\n", " klasse_navn geometry \n", "0 myr POLYGON ((265791.900 6614994.650, 265790.180 6... \n", "1 myr POLYGON ((262206.270 6628558.130, 262202.640 6... \n", "2 myr POLYGON ((265299.880 6621504.120, 265294.080 6... \n", "3 myr POLYGON ((260561.580 6622897.200, 260562.110 6... \n", "4 myr POLYGON ((265326.090 6621350.040, 265320.020 6... " ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "code", "execution_count": 42, "id": "6dd48de3", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['gml_id', 'oppdateringsdato', 'klasse', 'klasse_navn', 'geometry'], dtype='object')" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.columns" ] }, { "cell_type": "markdown", "id": "034d4fd4", "metadata": {}, "source": [ "Dette datasettet har flere kolonner enn vi trenger, la oss gjøre et utvalg av de vi trenger. Vi beholder 'klasse’ og ’klassenavn’, og selvfølgelig kolonnen `geometry`." ] }, { "cell_type": "code", "execution_count": 43, "id": "8d02e53a", "metadata": {}, "outputs": [], "source": [ "data = data[[\"klasse\", \"klasse_navn\", \"geometry\"]]" ] }, { "cell_type": "markdown", "id": "e61deeb1", "metadata": {}, "source": [ "Hvordan ser datasettet ut nå?" ] }, { "cell_type": "code", "execution_count": 45, "id": "523c54ca", "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", "
klasseklasse_navngeometry
0100myrPOLYGON ((265791.900 6614994.650, 265790.180 6...
1100myrPOLYGON ((262206.270 6628558.130, 262202.640 6...
2100myrPOLYGON ((265299.880 6621504.120, 265294.080 6...
3100myrPOLYGON ((260561.580 6622897.200, 260562.110 6...
4100myrPOLYGON ((265326.090 6621350.040, 265320.020 6...
\n", "
" ], "text/plain": [ " klasse klasse_navn geometry\n", "0 100 myr POLYGON ((265791.900 6614994.650, 265790.180 6...\n", "1 100 myr POLYGON ((262206.270 6628558.130, 262202.640 6...\n", "2 100 myr POLYGON ((265299.880 6621504.120, 265294.080 6...\n", "3 100 myr POLYGON ((260561.580 6622897.200, 260562.110 6...\n", "4 100 myr POLYGON ((265326.090 6621350.040, 265320.020 6..." ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "id": "7974c002", "metadata": {}, "source": [ ":::{admonition} Sjekk din forståelse:\n", ":class: hint\n", "\n", "Bruk dine pandas ferdigheter på dette geopandas datasettet for å finne ut følgende\n", "informasjon:\n", "\n", "- Hvor mange rader har datasettet?\n", "- Hvor mange unike klasser?\n", ":::\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "id": "390a9181", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "id": "950ccdce", "metadata": {}, "source": [ "\n", "---\n", "\n", "### Utforsk datasettet på et kart:\n", "\n", "Som geografer, elsker vi kart. Men utover det, er det alltid en god idé å\n", "utforske et nytt datasett også på et kart. For å lage et enkelt kart av en\n", "`geopandas.GeoDataFrame`, bruk ganske enkelt dens `plot()` metode. Den fungerer likt som\n", "i pandas, men **tegner et kart basert på geometriene i datasettet** i stedet for et diagram." ] }, { "cell_type": "code", "execution_count": 46, "id": "132b77b4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "data.plot()" ] }, { "cell_type": "markdown", "id": "d6e3669c", "metadata": {}, "source": [ "Voilá! Det er faktisk så enkelt å lage et kart ut av et geografisk datasett.\n", "Geopandas posisjonerer automatisk kartet ditt på en måte som dekker hele\n", "utstrekningen av dataene dine.\n", "\n", "### Geometrier i geopandas\n", "\n", "Geopandas drar nytte av shapelys geometriobjekter. Geometrier lagres\n", "i en kolonne kalt *geometry*.\n", "\n", "La oss skrive ut de første 5 radene av kolonnen `geometry`:" ] }, { "cell_type": "code", "execution_count": 47, "id": "8f7bafdb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 POLYGON ((265791.900 6614994.650, 265790.180 6...\n", "1 POLYGON ((262206.270 6628558.130, 262202.640 6...\n", "2 POLYGON ((265299.880 6621504.120, 265294.080 6...\n", "3 POLYGON ((260561.580 6622897.200, 260562.110 6...\n", "4 POLYGON ((265326.090 6621350.040, 265320.020 6...\n", "Name: geometry, dtype: geometry" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.geometry.head()" ] }, { "cell_type": "markdown", "id": "c1cb36b2", "metadata": {}, "source": [ "Kolonnen `geometry` inneholder kjente verdier:\n", "*Well-Known Text* (WKT) strenger. La deg ikke lure, de er faktisk,\n", "`shapely.geometry` objekter (du husker de kanskje fra [forrige uke](#02_geometriske_objekter)) som når man bruke `print()` eller konverterer til\n", "en `str`, blir representert som en WKT-streng).\n", "\n", "Siden geometriene i en `GeoDataFrame` er lagret som shapely-objekter, kan vi\n", "bruke **shapely metoder** for å håndtere geometrier i geopandas.\n", "\n", "La oss ta en nærmere titt på (en av) polygon-geometriene i datasettet,\n", "og prøve å bruke noe av shapely-funksjonaliteten vi allerede er kjent med. For enkelhetens skyld, jobber vi først med geometrien til bare den aller første linjen:" ] }, { "cell_type": "code", "execution_count": 48, "id": "89c5a119", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Verdien av kolonnen `geometry` i rad 0:\n", "data.at[0, \"geometry\"]" ] }, { "cell_type": "code", "execution_count": 49, "id": "42c86daf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Område: 1955 m².\n" ] } ], "source": [ "# Skriv ut informasjon om arealet \n", "print(f\"Område: {round(data.at[0, 'geometry'].area)} m².\")" ] }, { "cell_type": "markdown", "id": "9819c5af", "metadata": {}, "source": [ ":::{admonition} Områdemålenhet\n", ":class: note\n", "\n", "Her kjenner vi koordinatsystemet (CRS) til inputdatasettet. CRS definerer også måleenheten (i vårt tilfelle, meter). Derfor kan vi skrive ut det beregnede området, inkludert en områdemåleenhet (kvadratmeter).\n", ":::\n", "\n", "\n", "La oss gjøre det samme for flere rader, og utforske ulike måter å gjøre det på.\n", "Først bruker vi `iterrows()`-metoden:" ] }, { "cell_type": "code", "execution_count": 50, "id": "3a5ce1c6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Polygonet i rad 0 har et areal på 1955.5 m².\n", "Polygonet i rad 1 har et areal på 1101.9 m².\n", "Polygonet i rad 2 har et areal på 2658.0 m².\n", "Polygonet i rad 3 har et areal på 6741.0 m².\n", "Polygonet i rad 4 har et areal på 2715.1 m².\n" ] } ], "source": [ "# Iterer over de første 5 radene i datasettet\n", "for index, row in data[:5].iterrows():\n", " polygon_area = row[\"geometry\"].area\n", " print(f\"Polygonet i rad {index} har et areal på {polygon_area:0.1f} m².\")" ] }, { "cell_type": "markdown", "id": "e053d85b", "metadata": {}, "source": [ "Som du ser er alle **pandas** funksjoner, som `iterrows()`-metoden, tilgjengelige i geopandas uten behov for å kalle pandas separat. Geopandas bygger på toppen av pandas, og arver mesteparten av funksjonaliteten.\n", "\n", "Selvfølgelig er ikke `iterrows()`-metoden den mest praktiske og effektive måten\n", "å beregne arealet til mange rader. Både `GeoSeries` (geometri-kolonner) og\n", "`GeoDataFrame`s har en `area`-egenskap:" ] }, { "cell_type": "code", "execution_count": 51, "id": "0397c2f6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1955.48975\n", "1 1101.93145\n", "2 2657.99245\n", "3 6740.99175\n", "4 2715.09810\n", " ... \n", "1281 332.87820\n", "1282 157.27005\n", "1283 229322.51250\n", "1284 278301.64510\n", "1285 36206.47765\n", "Length: 1286, dtype: float64" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# `area`-egenskapen til en `GeoDataFrame`\n", "data.area" ] }, { "cell_type": "code", "execution_count": 52, "id": "ccc78bdd", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1955.48975\n", "1 1101.93145\n", "2 2657.99245\n", "3 6740.99175\n", "4 2715.09810\n", " ... \n", "1281 332.87820\n", "1282 157.27005\n", "1283 229322.51250\n", "1284 278301.64510\n", "1285 36206.47765\n", "Length: 1286, dtype: float64" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# `area`-egenskapen til en `GeoSeries`\n", "data[\"geometry\"].area" ] }, { "cell_type": "markdown", "id": "a2b09c92", "metadata": {}, "source": [ "Det er enkelt å lage en ny kolonne som holder arealet:" ] }, { "cell_type": "code", "execution_count": 53, "id": "3858e586", "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
klasseklasse_navngeometryareal
0100myrPOLYGON ((265791.900 6614994.650, 265790.180 6...1955.48975
1100myrPOLYGON ((262206.270 6628558.130, 262202.640 6...1101.93145
2100myrPOLYGON ((265299.880 6621504.120, 265294.080 6...2657.99245
3100myrPOLYGON ((260561.580 6622897.200, 260562.110 6...6740.99175
4100myrPOLYGON ((265326.090 6621350.040, 265320.020 6...2715.09810
...............
1281120tettbebyggelsePOLYGON ((264495.760 6627874.970, 264495.310 6...332.87820
1282120tettbebyggelsePOLYGON ((264428.770 6627393.320, 264429.130 6...157.27005
1283120tettbebyggelsePOLYGON ((264328.880 6627669.330, 264329.240 6...229322.51250
1284120tettbebyggelsePOLYGON ((262436.510 6622047.280, 262438.610 6...278301.64510
1285120tettbebyggelsePOLYGON ((264288.040 6627606.730, 264280.250 6...36206.47765
\n", "

1286 rows × 4 columns

\n", "
" ], "text/plain": [ " klasse klasse_navn \\\n", "0 100 myr \n", "1 100 myr \n", "2 100 myr \n", "3 100 myr \n", "4 100 myr \n", "... ... ... \n", "1281 120 tettbebyggelse \n", "1282 120 tettbebyggelse \n", "1283 120 tettbebyggelse \n", "1284 120 tettbebyggelse \n", "1285 120 tettbebyggelse \n", "\n", " geometry areal \n", "0 POLYGON ((265791.900 6614994.650, 265790.180 6... 1955.48975 \n", "1 POLYGON ((262206.270 6628558.130, 262202.640 6... 1101.93145 \n", "2 POLYGON ((265299.880 6621504.120, 265294.080 6... 2657.99245 \n", "3 POLYGON ((260561.580 6622897.200, 260562.110 6... 6740.99175 \n", "4 POLYGON ((265326.090 6621350.040, 265320.020 6... 2715.09810 \n", "... ... ... \n", "1281 POLYGON ((264495.760 6627874.970, 264495.310 6... 332.87820 \n", "1282 POLYGON ((264428.770 6627393.320, 264429.130 6... 157.27005 \n", "1283 POLYGON ((264328.880 6627669.330, 264329.240 6... 229322.51250 \n", "1284 POLYGON ((262436.510 6622047.280, 262438.610 6... 278301.64510 \n", "1285 POLYGON ((264288.040 6627606.730, 264280.250 6... 36206.47765 \n", "\n", "[1286 rows x 4 columns]" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[\"areal\"] = data.area\n", "data" ] }, { "cell_type": "markdown", "id": "cd83e402", "metadata": {}, "source": [ ":::{admonition} Beskrivende statistikk\n", ":class: hint\n", "\n", "Vet du hvordan du beregner *minimum*, *maksimum*, *sum*, *gjennomsnitt*, og\n", "*standardavvik* av en pandas-kolonne? ([Les mer her, hvis du trenger å friske opp Pandas-kunnskapene dine](https://pythongis.org/part1/chapter-03/nb/00-pandas-basics.html#descriptive-statistics))\n", "Hva er disse verdiene for arealkolonnen i datasettet?\n", ":::\n", "\n", "\n", "\n", "## Lagre en delmengde av data til en fil\n", "\n", "[Tidligere](#03_vektor), har vi lært\n", "hvordan vi skriver en hel `GeoDataFrame` til en fil. Vi kan også skrive en\n", "filtrert delmengde av et datasett til en ny fil, f.eks. for å hjelpe med behandlingen av komplekse datasett.\n", "\n", "Først, isoler innsjøene i inngangsdatasettet (klassenummer `200`, se tabell\n", "over):" ] }, { "cell_type": "code", "execution_count": 54, "id": "c79edd7e", "metadata": {}, "outputs": [], "source": [ "innsjoer = data[data.klasse == 200]" ] }, { "cell_type": "markdown", "id": "c0e8cae8", "metadata": {}, "source": [ "Deretter, tegn datadelmengden for å visuelt sjekke om den ser riktig ut:" ] }, { "cell_type": "code", "execution_count": 55, "id": "9f823abe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "innsjoer.plot()" ] }, { "cell_type": "markdown", "id": "9789f576", "metadata": {}, "source": [ "Og til slutt, skriv de filtrerte dataene til en Shapefile:" ] }, { "cell_type": "code", "execution_count": 56, "id": "68f87a89", "metadata": {}, "outputs": [], "source": [ "innsjoer.to_file(DATA_MAPPE / \"arealdekke\" / \"innsjoer.gpkg\")" ] }, { "cell_type": "markdown", "id": "212094a8-d518-4d80-9207-eb17d9b46b1c", "metadata": {}, "source": [ "Sjekk [Vector Data I/O](#03_vektor) avsnittet for å se hvilke dataformater\n", "geopandas kan skrive til." ] }, { "cell_type": "markdown", "id": "a3351d5f", "metadata": {}, "source": [ "## Gruppering av data\n", "\n", "En spesielt nyttig metode i (geo)pandas' dataframes er deres grupperingsfunksjon: [`groupby()`](https://pandas.pydata.org/docs/user_guide/groupby.html)\n", "kan **dele data inn i grupper** basert på noen kriterier, **bruke** en funksjon\n", "individuelt til hver av gruppene, og **kombinere** resultater av en slik\n", "operasjon i en felles datastruktur.\n", "\n", "Vi kan bruke *gruppering* her for å dele inputdatasettet vårt i delmengder som relatere\n", "til hver av `klasse`ne i arealdekke, deretter lagre en separat fil for hver\n", "klasse.\n", "\n", "La oss starte dette ved igjen å ta en titt på hvordan datasettet faktisk ser ut:" ] }, { "cell_type": "code", "execution_count": 57, "id": "39f59197", "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", "
klasseklasse_navngeometryareal
0100myrPOLYGON ((265791.900 6614994.650, 265790.180 6...1955.48975
1100myrPOLYGON ((262206.270 6628558.130, 262202.640 6...1101.93145
2100myrPOLYGON ((265299.880 6621504.120, 265294.080 6...2657.99245
3100myrPOLYGON ((260561.580 6622897.200, 260562.110 6...6740.99175
4100myrPOLYGON ((265326.090 6621350.040, 265320.020 6...2715.09810
\n", "
" ], "text/plain": [ " klasse klasse_navn geometry \\\n", "0 100 myr POLYGON ((265791.900 6614994.650, 265790.180 6... \n", "1 100 myr POLYGON ((262206.270 6628558.130, 262202.640 6... \n", "2 100 myr POLYGON ((265299.880 6621504.120, 265294.080 6... \n", "3 100 myr POLYGON ((260561.580 6622897.200, 260562.110 6... \n", "4 100 myr POLYGON ((265326.090 6621350.040, 265320.020 6... \n", "\n", " areal \n", "0 1955.48975 \n", "1 1101.93145 \n", "2 2657.99245 \n", "3 6740.99175 \n", "4 2715.09810 " ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head()" ] }, { "cell_type": "markdown", "id": "fbda2c64", "metadata": {}, "source": [ "Husk: kolonnen `klasse` inneholder informasjon om en polygons arealbrukstype. Bruk metoden [`pandas.Series.unique()`](https://pandas.pydata.org/docs/reference/api/pandas.Series.unique.html) for å liste alle verdier som forekommer:" ] }, { "cell_type": "code", "execution_count": 58, "id": "259800c7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([100, 200, 700, 600, 500, 400, 300, 800, 900, 110, 120])" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[\"klasse\"].unique()" ] }, { "cell_type": "markdown", "id": "893e9a94", "metadata": {}, "source": [ "For å gruppere data, bruk data-rammens `groupby()` metode, oppgi et kolonnenavn som parameter:" ] }, { "cell_type": "code", "execution_count": 60, "id": "dfe88718", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gruppert_data = data.groupby(\"klasse\")\n", "gruppert_data" ] }, { "cell_type": "markdown", "id": "5e765e36", "metadata": {}, "source": [ "Så, `gruppert_data` er et `DataFrameGroupBy` objekt. Inne i et `GroupBy` objekt,\n", "er egenskapen `groups` en ordbok som fungerer som en oppslagstabell: den registrerer\n", "hvilke rader som hører til hvilken gruppe. Nøklene i ordboken er de unike\n", "verdiene av gruppekolonnen:" ] }, { "cell_type": "code", "execution_count": 62, "id": "d1b2d982", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{100: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], 110: [1255, 1256], 120: [1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285], 200: [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101], 300: [775, 776, 777, 778, 779, 780, 781, 782, 783], 400: [773, 774], 500: [770, 771, 772], 600: [623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, ...], 700: [102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, ...], 800: [784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, ...], 900: [1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254]}" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gruppert_data.groups" ] }, { "cell_type": "markdown", "id": "fcc6f43b", "metadata": {}, "source": [ "Imidlertid kan man også ganske enkelt iterere over hele `GroupBy` objektet. La oss\n", "telle hvor mange rader med data hver gruppe har:" ] }, { "cell_type": "code", "execution_count": 63, "id": "01072ba9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Arealdekkeklasse 100 har 22 rader.\n", "Arealdekkeklasse 110 har 2 rader.\n", "Arealdekkeklasse 120 har 29 rader.\n", "Arealdekkeklasse 200 har 80 rader.\n", "Arealdekkeklasse 300 har 9 rader.\n", "Arealdekkeklasse 400 har 2 rader.\n", "Arealdekkeklasse 500 har 3 rader.\n", "Arealdekkeklasse 600 har 147 rader.\n", "Arealdekkeklasse 700 har 521 rader.\n", "Arealdekkeklasse 800 har 458 rader.\n", "Arealdekkeklasse 900 har 13 rader.\n" ] } ], "source": [ "for key, group in gruppert_data:\n", " print(f\"Arealdekkeklasse {key} har {len(group)} rader.\")" ] }, { "cell_type": "markdown", "id": "63b80254", "metadata": {}, "source": [ "Det er for eksempel 80 innsjøpolygoner (klasse `200`) i inngangsdatasettet.\n", "\n", "For å få alle rader som tilhører en bestemt gruppe, bruk `get_group()`\n", "metoden, som returnerer en helt ny `GeoDataFrame`:" ] }, { "cell_type": "code", "execution_count": 65, "id": "a1e32392", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "geopandas.geodataframe.GeoDataFrame" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "innsjøer = gruppert_data.get_group(200)\n", "type(innsjøer)" ] }, { "cell_type": "markdown", "id": "25aafb13", "metadata": {}, "source": [ ":::{caution}OBS\n", "Indeksen i den nye data-frammen forblir den samme som i det ugrupperte inputdatasettet.\n", "Dette kan være nyttig, for eksempel når du vil slå sammen de grupperte dataene\n", "tilbake til de originale inputdataene.\n", ":::\n", "\n", "\n", "## Skriv grupperte data til separate filer\n", "\n", "Nå har vi alle nødvendige verktøy for hånden for å dele inputdataene i\n", "separate datasett for hver arealdekkeklasse, og skrive de individuelle delmengdene til\n", "nye, separate, filer. Faktisk ser koden nesten for enkel ut, gjør den ikke?" ] }, { "cell_type": "code", "execution_count": 67, "id": "bcbd8fc0", "metadata": {}, "outputs": [], "source": [ "# Iterer over inngangsdataene, gruppert etter \"klasse\"\n", "for key, group in data.groupby(\"klasse\"):\n", " # lagre gruppen til en ny shapefile\n", " group.to_file(DATA_MAPPE / \"arealdekke\" / f\"arealdekke_{key}.gpkg\")" ] }, { "cell_type": "markdown", "id": "00876918", "metadata": {}, "source": [ ":::{admonition} Filnavn\n", ":class: attention\n", "\n", "Vi brukte en `pathlib.Path` kombinert med en f-streng for å generere den nye output-filens sti og navn. Sjekk [Håndtering av filstier-notebooken](#03_filstier)\n", "for å gå gjennom hvordan de fungerer.\n", ":::\n", "\n", "\n", "## Ekstra: lagre sammendragsstatistikk til CSV regneark\n", "\n", "Når resultatene av en operasjon på en `GeoDataFrame` ikke inkluderer en\n", "geometri, vil data-rammen som kommer ut automatisk bli en 'vanlig'\n", "`pandas.DataFrame`, og kan lagres til standard tabellformater.\n", "\n", "En interessant anvendelse av dette er å lagre grunnleggende beskrivende statistikk av et geografisk datasett til en CSV-tabell. For eksempel ønsker vi kanskje å vite arealet hver arealdekkeklasse dekker.\n", "\n", "Igjen starter vi med å gruppere inputdataene etter arealdekke, og deretter beregne summen av hver klasses areal. Dette kan kondenseres til en linje med kode:" ] }, { "cell_type": "code", "execution_count": 69, "id": "5eb727ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "klasse\n", "100 3.330440e+05\n", "110 1.382096e+05\n", "120 4.700334e+06\n", "200 1.839231e+06\n", "300 9.028421e+05\n", "400 1.024443e+06\n", "500 3.651047e+04\n", "600 3.785512e+07\n", "700 8.280398e+06\n", "800 4.854529e+07\n", "900 1.094627e+05\n", "Name: areal, dtype: float64" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "areal_informasjon = data.groupby(\"klasse\").areal.sum()\n", "areal_informasjon" ] }, { "cell_type": "markdown", "id": "02e752b4", "metadata": {}, "source": [ "Vi kan deretter lagre den resulterende tabellen til en CSV-fil ved å bruke standard pandas tilnærming." ] }, { "cell_type": "code", "execution_count": 70, "id": "72bd1eb1", "metadata": {}, "outputs": [], "source": [ "areal_informasjon.to_csv(DATA_MAPPE / \"arealdekke\" / \"areal_per_arealdekkeklasse.csv\")" ] } ], "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.9" } }, "nbformat": 4, "nbformat_minor": 5 }