Appliquer une opération personnalisée à chaque géométrie
Maintenant que nous savons comment obtenir le parc national le plus près pour un seul point, faisons-le pour tous les points. Pour cela, nous allons d'abord écrire une fonction qui prend un seul point en argument et retourne le résultat voulu. Ensuite, nous pourrons utiliser cette fonction pour l'appliquer à tous les points.
Les jeux de données sur les sites miniers (mining_sites) et les parcs nationaux (national_parks) sont déjà chargés. Le site minier unique des exercices précédents est déjà défini sous le nom single_mine.
Cette activité fait partie du cours
Travailler avec des données géospatiales en Python
Instructions de l’exercice
- Créez une fonction
closest_national_park()qui réalise l'analyse effectuée dans l'exercice précédent : étant donné un seul point et l'ensemble des parcs nationaux, retournez le nom du parc national le plus près. - À titre de test, appelez cette fonction sur le point unique (
single_mine) et affichez le résultat. Est-ce le même qu'avant (« Virunga National park ») ? - Appliquez cette fonction à tous les points de
mining_siteset assignez le résultat à une colonne appelée'closest_park'.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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())