# Calculating the area of multiple polygons using GeoPandas

I am writing a Python script to calculate the area of polygons, as I have a small polygon, I am getting the area of polygon 0.000. A shapefile contains multiple shapefiles. I am thinking due to the area unit, it is printing 0.000. Shapefile projection is CRS EPSG:4326 - WGS 84 - Geographic. I have to change the unit of area to Hectare in the script to calculate the area. I need to change the unit of area hectare(ha) in the below script.

Below is my working code, please let me know, how to change the area unit the below code

``````# Import necessary modules
import geopandas as gpd

# Set filepath (fix path relative to yours)
fp = r"D:\Data\Merged_Shapefile.shp"

selection = data[0:200]
for index, row in selection.iterrows():
poly_area = row['geometry'].area
print("Polygon area at index {0} is: {1:.3f}".format(index, poly_area))
``````
• after adding this command line I am getting this warning message and the area still the same 0.000 in the output. Warning message: Use 'GeoSeries.to_crs()' to re-project geometries to a projected CRS before this operation.
– SWAT
Mar 19 at 9:22

I'm not sure if I fully understand you. I think you try to get the area of the polygons in hectares, isn it?

Well it will depend on your CRS, since I think it takes the unit system from it. If you are using cartesian coordinates (x and y), your area will be computed in squared meters, so I think it is as simple as divide it by 10000. If your problem is that the area is not computed in m², I suggest you to change your coordinate system to a cartesian one.

In addition, if the area of some polygons are returning 0s, that means you have wrong polygon topologies. In the simplest cases it can be solved by doing a buffer of 0 meters.

• Yes, i am trying to get the polygon area in hectare. and my shapefile projection is CRS EPSG:4326 - WGS 84 - Geographic.
– SWAT
Mar 19 at 7:46
• EPSG:4326 is geographical projection (i.e. in lat/lon coordinates). That means it will locate the coordinates in a sphere and the area is computed in degrees. If you're working in a local area, it would be good to change the CRS to the local one. If you are working on a global map to compute the areas, it is good to reproject to a cartesian projection with equal-area properties. Mar 19 at 8:14

For this I usually use the 'cea' projection, which (as I understand it) is an equal-area projection. Then I use the area property of the geometry. Dividing by 10**6 results in km2. So divide that by 100 to get ha.

``````data_copy = data.copy()
data_copy = data_copy.to_crs({'proj':'cea'})
data['poly_area'] = data_copy['geometry'].area/ 10**6 / 100
``````