21 votos

Geopandas buffer utilizando geodataframe manteniendo el dataframe

El objetivo es crear un geoDataFrame con geometrías almacenadas en buffer Y con todos los "atributos" del geodataframe original.

Soy capaz de realizar un buffer en mi geoDataFrame utilizando:

gdfHybasBuffer = gdfHybas['geometry'].buffer(-0.005,resolution=16)

pero el resultado es una geoSerie y no un geoDataFrame, y por lo tanto no contiene los datos del geoDataFrame original ni contiene un índice para unir los datos a los datos originales. ¿Existe una forma mejor de realizar un buffer manteniendo los datos de atributos originales?

Código github

Es bastante sencillo crear un búfer en una geoserie de geopandas.

38voto

Alz Puntos 576
from shapely.geometry import Point
import pandas as pd
import geopandas as gpd
p1 = Point((1,2))
p2 = Point((5,6))
df = pd.DataFrame({'a': [11,22]})
gdf = gpd.GeoDataFrame(df, geometry = [p1,p2])
gdf
#out: 
#   a   geometry
#0  11  POINT (1 2)
#1  22  POINT (5 6)

Puede asignar directamente el búfer como un nuevo geometry a su GeoDataFrame:

gdf['geometry'] = gdf.geometry.buffer(2)
#out:
#   a   geometry
#0  11  POLYGON ((3 2, 2.990369453344394 1.80396571934...
#1  22  POLYGON ((7 6, 6.990369453344394 5.80396571934...
gdf.plot()

buffer

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