Geopandas vs QGIS vs valeurs de zone ArcGIS

Dec 20 2020

Je calcule des zones d'un KML dans QGIS, ArcGIS et GeoPandas et tous sont alors différents, mes résultats sont les suivants:

Géopandas ArcGIS QGIS
29,3498 28,500084 25,651554

Le crs original du KML est 4326, donc dans QGIS et ArcGIS d'abord, je reprojecte le KML (dans ArcGIS, je dois d'abord faire du KML un shp ou une entité), puis je calcule la surface.

J'ai vérifié cet article sur le même problème mais avec QGIS, et je calcule la zone dans QGIS comme ils l'ont dit, dans ArcGIS, j'ai fait quelque chose de similaire, j'ai d'abord défini le système de coordonnées sur le dataframe, puis recalculé la zone, avec GeoPandas I´ je fais ceci:

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()

Juste au cas où quelqu'un voudrait vérifier le processus, les fichiers sont ici

Réponses

5 KadirŞahbaz Dec 20 2020 at 03:00

Dans GeoPandas, vous transformez le système de coordonnées géographiques du fichier de formes en un système projeté conforme (préservation de l'angle, ce qui signifie qu'il ne préserve pas les zones). On s'attend à ce que les valeurs de surface soient différentes. En fait, dans ce cas, si vous aviez la même valeur dans GeoPandas, alors quelque chose n'allait pas.

Quand il s'agit de QGIS vs ArcGIS, il existe de nombreuses géométries non valides dans vos données. Si vous appliquez l'outil Dissolve dans QGIS, vous le verrez. (Je présume) ArcGIS et QGIS peuvent gérer différemment les géométries non valides ou faire quelque chose dont nous ne sommes pas conscients ou autre chose.

Ma suggestion:

  • Après avoir changé crs, enregistrez en gdfutilisant gdf.to_file("new_file_path").
  • Ensuite, ouvrez le nouveau fichier de formes et comparez les zones.

Voici ce que j'ai:

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

Cette réponse n'explique pas parfaitement pourquoi les domaines sont différents. Au moins, vous vous débarrassez du problème de différents domaines.