Python >> Tutoriel Python >  >> Python Tag >> Pandas

Calcul de la longueur du polygone dans les géopandas ?

Même manière que la zone mais :

df.geometry.length

ou

df['geometry'].length

Voir GeoSeries.length :

Renvoie une série contenant la longueur de chaque géométrie.


Vous pouvez utiliser GeoSeries.length pour cela. Notez que geopandas utilise Shapely qui est crs agnostique. Vous devrez reprojeter votre geodataframe dans un crs dans une unité qui a du sens.

import geopandas as gpd

gdf = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
gdf.crs
gdf["perimeter"] = gdf["geometry"].length
gdf.head()
# As you can see, the perimeter is calculated in the unit of the crs e.g. degrees length. not very meaningful.

# lets reproject and try again

ECKERT_IV_PROJ4_STRING = "+proj=eck4 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"

gdf_eckert4 = gdf.to_crs(ECKERT_IV_PROJ4_STRING)
gdf_eckert4["perimeter"] = gdf_eckert4["geometry"].length
gdf_eckert4.head()

Notez que la longueur d'un polygone (périmètre) est arbitraire en fonction de la résolution de votre polygone. Il est également connu sous le nom de paradoxe du littoral

Carnet avec exemple