1 votos

¿Cómo puedo recopilar geometrías de un shapefile de una sola parte a un archivo de varias partes utilizando GeoPandas u otras soluciones que no sean ArcPy?

He intentado usar la herramienta opandas.colctopandas.colct para hacer esto utilizando el fragmento de código a continuación, pero borra los campos de los shapefiles de entrada y no recopila correctamente las geometrías. doc: https://geopandas.org/reference/geopandas.tools.collect.html

import geopandas as gp

gdf = gp.read_file('output/input.shp')
geos = gp.GeoSeries(gdf)
gp.tools.collect(geos)
gp.GeoSeries.to_file(geos, 'output.shp')

¿Puede alguien corregir mi método o sugerir una solución mejor?

0voto

Yada Puntos 9489

El siguiente código funciona como se esperaba (donde usé mis propias rutas) recopilando directamente geometrías de las características en lugar de crear un nuevo GeoSeries:

import geopandas as gp

gdf = gp.read_file('/home/zeito/pyqgis_data/polygon8.shp')
print(gdf)

geom = gdf['geometry']

new_geom = gp.tools.collect(geom)

df = {'id': [0], 'geometry': [new_geom]}

new_gdf = gp.GeoDataFrame(df, crs="EPSG:32612")

print(new_gdf)

new_gdf.to_file('/home/zeito/pyqgis_data/output.shp')

La capa utilizada era un shapefile de parte única proyectado con EPSG:32612; como se puede observar en la siguiente imagen.

enter image description here

Después de ejecutar el código anterior, la capa resultante cargada es efectivamente un MultiPart MultiPolygon. También se puede corroborar con las declaraciones de impresión utilizadas con las variables gdf y new_gdf.

enter image description here

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