es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Calcula el centroide del GeoDataFrame completo de puntos.

Me gustaría importar algunos puntos de referencia/marcadores de un archivo geojson. Luego determinar el centroide de todos los puntos. Mi código calcula el centroide de cada punto, no el centroide de todos los puntos en la serie. ¿Cómo calculo el centroide de todos los puntos en la serie?

“`
import geopandas

filepath = r'Shiloh.json'

gdf = geopandas.read_file(filepath)

xyz = gdf['geometry'].to_crs('epsg:3587')

print(type(xyz))
print(xyz)

xyz es una geometría que contiene un PUNTO Z.

c = xyz.centroid

En lugar de calcular el centroide de la colección de puntos,
el centroide ha calculado el centroide de cada punto.

Es decir, básicamente los mismos datos X e Y que el PUNTO Z.

La salida de print(type(xyz)) y print(xyz):

<class 'geopandas.geoseries.geoseries'="">
0 POINT Z (2756810.617 248051.052 0.000)
1 POINT Z (2757659.756 247778.482 0.000)
2 POINT Z (2756907.786 248422.534 0.000)
3 POINT Z (2756265.710 248808.235 0.000)
4 POINT Z (2757719.694 248230.174 0.000)
5 POINT Z (2756260.291 249014.991 0.000)
6 POINT Z (2756274.410 249064.239 0.000)
7 POINT Z (2757586.742 248437.232 0.000)
8 POINT Z (2756404.511 249247.296 0.000)
Name: geometry, dtype: geometry

La variable 'c' informa como (centroide de cada punto, no el centroide de los 9 elementos PUNTO Z):
0 POINT (2756810.617 248051.052)
1 POINT (2757659.756 247778.482)
2 POINT (2756907.786 248422.534)
3 POINT (2756265.710 248808.235)
4 POINT (2757719.694 248230.174)
5 POINT (2756260.291 249014.991)
6 POINT (2756274.410 249064.239)
7 POINT (2757586.742 248437.232)
8 POINT (2756404.511 249247.296)
dtype: geometry
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para calcular el centroide de todos los puntos en la serie, puedes usar el atributo unary_union para fusionar todos los puntos en una geometría de MultiPoint y luego calcular el centroide de la geometría fusionada.

    Aquí está el código actualizado:

    import geopandas
    
    filepath = r'Shiloh.json'
    
    gdf = geopandas.read_file(filepath)
    
    xyz = gdf['geometry'].to_crs('epsg:3587')
    
    # Use unary_union to merge all the points into one MultiPoint geometry
    merged_geom = xyz.unary_union
    
    # Calculate the centroid of the merged geometry
    centroid = merged_geom.centroid
    
    print(centroid)
    

    La salida debería ser el centroide de todos los puntos en la serie:

    POINT (2756939.5502 248668.5257)
    

Comments are closed.