Übung 15

Übung 15.1

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.)

Musterlösung
import geopandas as gpd 

wald = gpd.read_file("data/wald.gpkg")

wald
type(wald)
wald.plot()

Übung 15.2

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?

Wichtig!

Melde dich bei den Betreuern wenn der SpatialJoin bei dir nicht funktioniert und du eine Fehlermeldung bekommst.

Musterlösung
zeckenstiche_gpd = gpd.read_file("data/zeckenstiche.gpkg")

gpd.sjoin(left_df = zeckenstiche_gpd, right_df = wald)
gpd.sjoin(left_df = wald, right_df = zeckenstiche_gpd) 

# in beiden Fällen hat der Output geich viele Zeilen. 
# In der ersten Variante ist die Geometrie
# des Outputs "Point", im zweiten Fall "Multipolygon"

Übung 15.3

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:

  1. Entsprechende Spalte selektieren (siehe Übung 4.5)
  2. Werte in der Spalte mit “ja” vergleichen
  3. Anzahl True mit sum() zählen (True entspricht immer 1, False entspricht immer 0)
Musterlösung
# die folgende Variante (mit dem Output "point") ist sinnvoller, da auch
# wir uns primär für die Punkte (Zeckenstiche) interessieren.
zeckenstiche_join = gpd.sjoin(left_df = zeckenstiche_gpd, right_df = wald)

sum(zeckenstiche_join["Wald_text"] == "ja")

Übung 15.4

Berechne nun Anteil der Zeckenstiche im Wald (gemessen an der Anzahl Zeckenstich-Meldungen total). Weise den Output der Variabel anteil_wald zu.

Musterlösung
anteil_wald = sum(zeckenstiche_join["Wald_text"] == "ja")/len(zeckenstiche_join["Wald_text"])