Aplicar una operación personalizada a cada geometría
Ahora que sabemos cómo obtener el parque nacional más cercano para un único punto, hagámoslo para todos los puntos. Para ello, primero vamos a escribir una función que reciba un único punto como argumento y devuelva el resultado deseado. Luego usaremos esa función para aplicarla a todos los puntos.
Los conjuntos de datos de los yacimientos mineros (mining_sites) y de los parques nacionales (national_parks) ya están cargados. El yacimiento minero individual de los ejercicios anteriores ya está definido como single_mine.
Este ejercicio forma parte del curso
Trabajo con datos geoespaciales en Python
Instrucciones del ejercicio
- Crea una función
closest_national_park()que realice el análisis del ejercicio anterior: dado un único punto y todos los parques nacionales, devuelve el nombre del parque nacional más cercano. - Como prueba, llama a esta función con el punto individual (
single_mine) e imprime el resultado. ¿Es el mismo que antes ("Virunga National park")? - Aplica esta función a todos los puntos de
mining_sitesy asigna el resultado a una columna llamada'closest_park'.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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())