Appliquer une opération personnalisée à chaque géométrie
Nous savons maintenant comment obtenir le parc national le plus proche pour un point donné ; faisons-le pour tous les points. Pour cela, nous allons d’abord écrire une fonction qui prend un seul point en argument et renvoie le résultat souhaité. Nous pourrons ensuite utiliser cette fonction pour l’appliquer à l’ensemble des 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.
Cet exercice fait partie du cours
Travailler avec des données géospatiales en Python
Instructions
- Créez une fonction
closest_national_park()qui réalise l’analyse effectuée dans l’exercice précédent : étant donné un point et l’ensemble des parcs nationaux, renvoyez le nom du parc national le plus proche. - Pour tester, appelez cette fonction sur le point unique (
single_mine) et affichez le résultat. Est-ce bien le même qu’avant ("Virunga National park") ? - Appliquez cette fonction à tous les points de
mining_siteset affectez le résultat à une colonne appelée'closest_park'.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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())