5 votos

Calculando áreas de polígonos dentro de otros polígonos con GeoPandas

Tengo 2 geodataframes:

  • GDF1 es un área con polígonos superpuestos divididos en 3 clases: (limpieza, infraestructura y mantenimiento) (las líneas negras representan los polígonos superpuestos)
  • GDF2 consta de polígonos que describen el tipo de superficie del área, como césped, arena, edificios, agua, etc. (los colores representan el tipo de superficie del área)

Quiero calcular: qué tipo de land_use_type (de GDF2) consiste cada polígono de GDF1.

Lo que intenté es:

GDF1 = gpd.GeoDataFrame.from_postgis('select class, geom_sm as geom 
                                        From geo.GDF1',
                                        con=engine, geom_col='geom')

GDF2 = gpd.GeoDataFrame.from_postgis('SELECT land_use_type,wkb_geometry_sm as geom 
                                      FROM geo.GDF2', 
                                      con=engine, geom_col='geom')

Calculé el área de cada polígono de land_use_type:

GDF2["area"] = GDF2['geom'].area

Y después de eso, hice una fusión en GDF1

merged = gpd.sjoin(GDF1, GDF2, how='left', op='intersects')

Obtuve una nueva columna con áreas pero no estoy seguro si ese es el cálculo correcto.

introducir descripción de la imagen aquí

3voto

J.J. Puntos 131

Creo que estás buscando la operación overlay (ver documentación):

merged = geopandas.overlay(GDF1, GDF2, how='intersection')

Esto te dará un GeoDataFrame con todas las intersecciones de todas las combinaciones de ambas capas. De esta forma, podrás calcular el área de los diferentes tipos de superficies para cada una de las clases.

2voto

Zach Martin Puntos 8

Hay un error arriba, lo correcto es:

merged = geopandas.overlay(GDF1, GDF2, how='intersection')

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X