Eine benutzerdefinierte Operation auf jede Geometrie anwenden
Jetzt, da wir wissen, wie wir den nächstgelegenen Nationalpark für einen einzelnen Punkt ermitteln, machen wir das für alle Punkte. Dafür schreiben wir zuerst eine Funktion, die einen einzelnen Punkt als Argument nimmt und das gewünschte Ergebnis zurückgibt. Dann können wir diese Funktion auf alle Punkte anwenden.
Die Datensätze zu den Bergbaustandorten (mining_sites) und den Nationalparks (national_parks) sind bereits geladen. Der einzelne Bergbaustandort aus den vorherigen Übungen ist bereits als single_mine definiert.
Diese Übung ist Teil des Kurses
Arbeiten mit Geodaten in Python
Anleitung zur Übung
- Erstelle eine Funktion
closest_national_park(), die die Analyse aus der vorherigen Übung durchführt: Für einen einzelnen Punkt und alle Nationalparks den Namen des nächstgelegenen Nationalparks zurückgeben. - Rufe diese Funktion als Test mit dem einzelnen Punkt (
single_mine) auf und gib das Ergebnis aus. Ist es dasselbe wie zuvor ("Virunga National park")? - Wende diese Funktion auf alle Punkte von
mining_sitesan und speichere das Ergebnis in einer Spalte mit dem Namen'closest_park'.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Define a function that returns the closest national park
def closest_national_park(geom, national_parks):
dist = ____
idx = ____
closest_park = ____
return closest_park
# Call the function on single_mine
print(closest_national_park(____, ____))
# Apply the function to all mining sites
mining_sites['closest_park'] = mining_sites.geometry.____(____, ____=____)
print(mining_sites.head())