Applicare un'operazione personalizzata a ogni geometria
Ora che sappiamo come ottenere il parco nazionale più vicino per un singolo punto, facciamolo per tutti i punti. Per prima cosa scriveremo una funzione che prende un singolo punto come argomento e restituisce il risultato desiderato. Poi useremo questa funzione per applicarla a tutti i punti.
Gli insiemi di dati sui siti minerari (mining_sites) e sui parchi nazionali (national_parks) sono già caricati. Il singolo sito minerario dagli esercizi precedenti è già definito come single_mine.
Questo esercizio fa parte del corso
Lavorare con i dati geospaziali in Python
Istruzioni dell'esercizio
- Crea una funzione
closest_national_park()che esegua l'analisi fatta nell'esercizio precedente: dato un singolo punto e tutti i parchi nazionali, restituisci il nome del parco nazionale più vicino. - Come prova, chiama questa funzione sul singolo punto (
single_mine) e stampa il risultato. È lo stesso di prima ("Virunga National park")? - Applica questa funzione a tutti i punti di
mining_sitese assegna il risultato a una colonna chiamata'closest_park'.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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())