Calculating length of polygon in geopandas?
Same way as area but:
df.geometry.length
or
df['geometry'].length
See GeoSeries.length:
Returns a Series containing the length of each geometry.
You can use GeoSeries.length for this. Note that geopandas uses Shapely that is crs agnostic. You will need to reproject your geodataframe to a crs in a unit that makes sense.
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()
Note that the length of a polygon (perimeter) is arbitrary depending on the resolution of your polygon. It is also known as the coastline paradox
Notebook with example