4

I'm calculating areas of a KML in QGIS, ArcGIS and GeoPandas and all of then are different, my results are this:

Geopandas ArcGIS QGIS
29.3498 28.500084 25,651554

The original crs of the KML is 4326, so in QGIS and ArcGIS first, I reproject the KML (in ArcGIS first I have to make the KML a shp or feature) and then I calculate the area.

I checked this post about the same problem but with QGIS, and I calculate the area in QGIS like they said, in ArcGIS I did something similar, first I set the coordinate system to the dataframe and then re calculate the area, with GeoPandas I´m doing this:

import geopandas as gpd
import fiona

gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
df = gpd.read_file('original_kml.kml', driver='KML')
gdf = df.to_crs('esri:102015')
gdf["area"] = gdf['geometry'].area/ 10**6

gdf.sum()

Just in case someone wants to check the process the files are here

  • 2
    You don't need to reproject to compute area in ArcGIS, but if you do, you should certainly report which projection you used. You seem to be stating, "I used three different ways to calculate area and got three different results," which is more of a statement than a question. What is your question? – Vince Dec 19 '20 at 17:04
  • The crs I´m using is 102015 ´South_America_Lambert_Conformal_Conic´. The question is: Why are the areas different,shouldn't they be the same? – Luis Medina Dec 19 '20 at 17:16
  • 3
    Did you apply the same datum transformations across the three different engines? With datum change involved, I wouldn't expect equivalence, but I wouldn't expect equivalence anyway – Vince Dec 19 '20 at 18:05
  • To be honest, I think I didn't. I just applied the project management tools in QGIS and ArcGIS, with Geopandas I did what the code show's. How can I do the datum change with Geopandas ? – Luis Medina Dec 19 '20 at 19:01
5

In GeoPandas, you transform the geographic coordinate system of shapefile into a conformal projected one (angle-preserving, which means it doesn't preserve areas). It is expected to get different area values. In fact, in this case, if you had the same value in GeoPandas, then something would be wrong.

When it comes to QGIS vs ArcGIS, there are many invalid geometries in your data. If you apply Dissolve tool in QGIS you will see that. (My presume) ArcGIS and QGIS may be handling the invalid geometries differently or they are doing something we are not aware of or something else.

My suggestion:

  • After changing crs, save gdf using gdf.to_file("new_file_path").
  • Then open the new shapefile and compare the areas.

This is what I've got:

Geopandas: 29.3497 km²  
ArcGIS   : 29.349727079406 km²
QGIS     : 29.349727432 km²

This answer doesn't explain perfectly why the areas are different. At least, you get rid of different areas issue.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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