I have a geopandas GeoDataFrame with Polygon geometry and I am calculating the area of the polygon, however, I am not sure what the unit is for the area.

import geopandas as gpd
from shapely.geometry import Polygon

 # create two dummy polygons
 poly1 = Polygon([(35.8,-98.666), (35.81,-98.656), (35.822,-98.662), (35.824,-98.678)])
 poly2 = Polygon([(35.527,-98.709), (35.537,-98.699), (35.55,-98.706), (35.552,-98.722)])

 # create a geopandas DataFrame with two rows
 data = {'name': ['Polygon 1', 'Polygon 2'], 'geometry': [poly1, poly2]}
 df = gpd.GeoDataFrame(data, crs='EPSG:4326')

I'd like to reproject the geometry and calculate the area in square meters or another linear unit, however, I have been having issues with re-projection and transforming geometries:


when I attempt to convert the crs to a projected coordinate reference system, I get Polygon (Inf Inf....).

df.to_crs('EPSG:32610', inplace=True)

Expected output is to calculate the area() in square meters units.

  • 1
    Does this answer help? Are you sure your input coordinates are long/lat?
    – Mike T
    May 3 at 1:46
  • 1
    Why would you expect that to work? Your dummy coordinates are nowhere near your UTM Zone. Try dummy coords actually in UTM zone 10N like poly1 = Polygon([(-125,49), (-124,49), (-124,50), (-125,50)]). Or provide us with some actual data so we can test and replicate.
    – user2856
    May 3 at 3:48
  • 1
    Does this answer your question? Calculating the Area by Square Feet with Geopandas
    – gene
    May 3 at 9:05
  • Or project into EPSG:32631 (WGS 84 / UTM zone 31 North) where your test latitudes and longitudes would fall.
    – mkennedy
    May 3 at 12:33
  • @user2856 I have updated the post with some actual data. The geometries represent locations in Texas.
    – kms
    May 3 at 16:45

1 Answer 1


Have you reversed lat and long? If you swap them it works:

import geopandas as gpd
from shapely.geometry import Polygon

coords1 = [(35.8,-98.666), (35.81,-98.656), (35.822,-98.662), (35.824,-98.678)]
coords1 = [x[::-1] for x in coords1] #Reverse lat lon
#[(-98.666, 35.8), (-98.656, 35.81), (-98.662, 35.822), (-98.678, 35.824)]

coords2 = [(35.527,-98.709), (35.537,-98.699), (35.55,-98.706), (35.552,-98.722)]
coords2 = [x[::-1] for x in coords2]

poly1 = Polygon(coords1)
poly2= Polygon(coords2)

data = {'name': ['Polygon 1', 'Polygon 2'], 'geometry': [poly1, poly2]}
df = gpd.GeoDataFrame(data, crs='EPSG:4326')
df.apply(lambda x: x.geometry.is_valid, axis=1)
#0    True
#1    True

df = df.to_crs(epsg=26915)
df.apply(lambda x: x.geometry.is_valid, axis=1)
# 0    True #Both were invalid with your original coordinates
# 1    True

df["area_m2"] = df.geometry.area
# 0    2.722672e+06
# 1    2.904215e+06

enter image description here

  • I swapped the axes to long, lat ...POLYGON ((-97.489 28.834, -97.479 28.844, -97.... and then gdf.geometry.area, I am still not seeing the values in square meters. The crs of the geoDataFrame is Projected CRS: EPSG:26915
    – kms
    May 4 at 18:45
  • I get approximately 0.000570 when running .area() method on geometry column.
    – kms
    May 4 at 21:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.