Musterlösung
import geopandas as gpd
= gpd.read_file("data/wald.gpkg")
wald
waldtype(wald)
wald.plot()
Lade das File “wald.gpkg” (siehe Tabelle 1) herunter und speichere es in deiner Workings Directory. Importiere den Datensatz und speichere ihn in der Variable wald
.
Schau dir wald
an (mit type
, .plot()
etc.)
import geopandas as gpd
= gpd.read_file("data/wald.gpkg")
wald
waldtype(wald)
wald.plot()
Führe einen SpatialJoin zwischen wald
und zeckenstiche
durch. Vertausche die Reihenfolge (left_df
, right_df
) und schaue dir den Output an. Wodurch unterscheiden sich die beiden outputs? Was sagt dir das über die Funktionsweise von sjoin
?
Melde dich bei den Betreuern wenn der SpatialJoin bei dir nicht funktioniert und du eine Fehlermeldung bekommst.
= gpd.read_file("data/zeckenstiche.gpkg")
zeckenstiche_gpd
= zeckenstiche_gpd, right_df = wald)
gpd.sjoin(left_df = wald, right_df = zeckenstiche_gpd)
gpd.sjoin(left_df
# in beiden Fällen hat der Output geich viele Zeilen.
# In der ersten Variante ist die Geometrie
# des Outputs "Point", im zweiten Fall "Multipolygon"
Führe nun den SpatialJoin aus Übung 15.2 in der Reihenfolge aus, der dir am sinnvollsten erscheint. Weise den Output dieser Operation der Variabel zeckenstiche_join
zu.
Nutze nun die dazugewonnene Spalte Wald_text
um die Anzahl Zeckenstich-Meldungen im Wald zu zählen. Dazu musst du wie folgt vorgehen:
True
mit sum()
zählen (True
entspricht immer 1
, False
entspricht immer 0
)# die folgende Variante (mit dem Output "point") ist sinnvoller, da auch
# wir uns primär für die Punkte (Zeckenstiche) interessieren.
= gpd.sjoin(left_df = zeckenstiche_gpd, right_df = wald)
zeckenstiche_join
sum(zeckenstiche_join["Wald_text"] == "ja")
Berechne nun Anteil der Zeckenstiche im Wald (gemessen an der Anzahl Zeckenstich-Meldungen total). Weise den Output der Variabel anteil_wald
zu.
= sum(zeckenstiche_join["Wald_text"] == "ja")/len(zeckenstiche_join["Wald_text"]) anteil_wald