Geopandas vs QGIS vs valores de área de ArcGIS
Estoy calculando áreas de un KML en QGIS, ArcGIS y GeoPandas y todos son diferentes, mis resultados son los siguientes:
Geopandas | ArcGIS | QGIS |
---|---|---|
29.3498 | 28.500084 | 25,651554 |
El crs original del KML es 4326, por lo que en QGIS y ArcGIS primero reproyecto el KML (en ArcGIS primero tengo que convertir el KML en un shp o feature) y luego calculo el área.
Revisé esta publicación sobre el mismo problema pero con QGIS, y calculo el área en QGIS como dijeron, en ArcGIS hice algo similar, primero configuré el sistema de coordenadas en el marco de datos y luego volví a calcular el área, con GeoPandas I´ estoy haciendo esto:
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()
En caso de que alguien quiera verificar el proceso, los archivos están aquí.
Respuestas
En GeoPandas, transforma el sistema de coordenadas geográficas del shapefile en uno proyectado conforme (preserva el ángulo, lo que significa que no preserva áreas). Se espera obtener diferentes valores de área. De hecho, en este caso, si tuviera el mismo valor en GeoPandas, entonces algo estaría mal.
Cuando se trata de QGIS vs ArcGIS, hay muchas geometrías no válidas en sus datos. Si aplica la herramienta Disolver en QGIS, verá eso. (Supongo que) ArcGIS y QGIS pueden estar manejando las geometrías no válidas de manera diferente o están haciendo algo de lo que no somos conscientes o algo más.
Mi sugerencia:
- Después de cambiar crs, guarde
gdf
usandogdf.to_file("new_file_path")
. - Luego abra el nuevo shapefile y compare las áreas.
Esto es lo que tengo:
Geopandas: 29.3497 km²
ArcGIS : 29.349727079406 km²
QGIS : 29.349727432 km²
Esta respuesta no explica perfectamente por qué las áreas son diferentes. Al menos, te deshaces del problema de diferentes áreas.