9 votos

Filtrado por tipo de geometría en GeoPandas

Tengo un GeoPandas GeoDataFrame con un geometry que contiene POLYGON s y MULTIPOLYGON s. ¿Cómo puedo filtrar sólo MULTIPOLYGON s?

Yo utilicé este enfoque, pero estoy seguro de que puede haber otros mejores:

# 'at' because it's data about Austria
at_geometries.loc[at_geometries["geometry"].astype("str").str.startswith("MULTI")]

11voto

nitinsavant Puntos 6

Utilizando geometry.type=="MULTIPOLYGON" es (15 veces en mi ordenador) más rápido.

at_geometries[at_geometries.geometry.type=="MULTIPOLYGON"]`

11voto

GreyCat Puntos 146

Hay muchas soluciones (véase ¿Cómo filtrar un geodataframe por tipo de geometría? por ejemplo)

Con .loc como tú pero con geometry.type o geom_type

gdf0 = gdf.loc[gdf.geometry.geometry.type=='MultiPolygon']
gdf0
    ID                 geometry
0    1  MULTIPOLYGON (((244697.452 1000369.231, 244827...
1    5  MULTIPOLYGON (((244912.829 1000603.336, 245042...
2    8  MULTIPOLYGON (((244732.568 1000040.313, 244862...

gdf0= gdf.loc[gdf.geometry.geom_type=='MultiPolygon']
idem

Con apply , lambda y type

gdf1 = gdf[gdf.geometry.apply(lambda x : x.type=='MultiPolygon')]
gdf1
    ID                 geometry
0    1  MULTIPOLYGON (((244697.452 1000369.231, 244827...
1    5  MULTIPOLYGON (((244912.829 1000603.336, 245042...
2    8  MULTIPOLYGON (((244732.568 1000040.313, 244862...

Con geom_type

gdf2 = gdf[gdf.geom_type=='MultiPolygon']
gdf2
    ID                 geometry
0    1  MULTIPOLYGON (((244697.452 1000369.231, 244827...
1    5  MULTIPOLYGON (((244912.829 1000603.336, 245042...
2    8  MULTIPOLYGON (((244732.568 1000040.313, 244862...

Con geometry.type como Kadir Şahbaz

gdf3 = gdf[gdf.geometry.type=="MultiPolygon"]
gdf3
    ID                 geometry
0    1  MULTIPOLYGON (((244697.452 1000369.231, 244827...
1    5  MULTIPOLYGON (((244912.829 1000603.336, 245042...
2    8  MULTIPOLYGON (((244732.568 1000040.313, 244862...

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