Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Uniones Espaciales con Geopandas | Técnicas de Análisis Espacial
Análisis Geoespacial con Python

Uniones Espaciales con Geopandas

Desliza para mostrar el menú

Las uniones espaciales son una forma poderosa de combinar conjuntos de datos geoespaciales basándose en sus relaciones espaciales en lugar de solo coincidir valores de atributos. Con geopandas, es sencillo realizar uniones espaciales para responder preguntas como "¿Qué puntos caen dentro de qué polígonos?" o "¿Qué elementos están más cerca entre sí?" La herramienta principal para esto en geopandas es el método sjoin(), que fusiona dos objetos GeoDataFrame evaluando sus relaciones espaciales.

Supón que tienes dos conjuntos de datos espaciales: uno que contiene ubicaciones de escuelas (como puntos) y otro que contiene los límites de vecindarios (como polígonos). Al realizar una unión espacial, puedes determinar en qué vecindario se encuentra cada escuela, o contar el número de escuelas por vecindario.

El método sjoin() en geopandas permite especificar el tipo de relación espacial a utilizar para la unión, como within, contains o intersects. Además, puedes elegir el tipo de unión — left, right o inner — que determina cómo se emparejan y retienen los registros de cada conjunto de datos en el resultado.

123456789101112131415161718192021222324252627282930313233343536
import geopandas as gpd from shapely.geometry import Point, Polygon # Create GeoDataFrame of points (e.g., schools) points = gpd.GeoDataFrame({ "school": ["A", "B", "C"], "geometry": [ Point(1, 1), Point(2, 2), Point(3, 3) ] }) # Create GeoDataFrame of polygons (e.g., neighborhoods) polygons = gpd.GeoDataFrame({ "neighborhood": ["Red", "Blue"], "geometry": [ Polygon([(0,0), (0,2), (2,2), (2,0)]), # Red neighborhood Polygon([(2,2), (2,4), (4,4), (4,2)]) # Blue neighborhood ] }) # Spatial join: which school is in which neighborhood? left_join = gpd.sjoin(points, polygons, how="left", predicate="within") right_join = gpd.sjoin(points, polygons, how="right", predicate="within") inner_join = gpd.sjoin(points, polygons, how="inner", predicate="within") print("Left Join Result:") print(left_join[["school", "neighborhood"]]) print("\nRight Join Result:") print(right_join[["school", "neighborhood"]]) print("\nInner Join Result:") print(inner_join[["school", "neighborhood"]])

En el ejemplo anterior, se observan tres tipos de uniones:

  • Left join: conserva todos los puntos (escuelas), agregando información del vecindario cuando está disponible;
  • Right join: conserva todos los polígonos (vecindarios), agregando las escuelas contenidas en ellos;
  • Inner join: conserva solo los puntos que están dentro de un vecindario.

La elección del tipo de unión correcto depende de los objetivos del análisis. Por ejemplo, si se desean todas las escuelas sin importar si están dentro de un vecindario, se utiliza un left join. Si se desea ver todos los vecindarios y las escuelas que contienen, se utiliza un right join. Si solo interesan las escuelas que están dentro de vecindarios, se utiliza un inner join.

question mark

¿Cuál afirmación sobre las uniones espaciales en geopandas es correcta?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 1

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 2. Capítulo 1
some-alt