Valores de área Geopandas vs QGIS vs ArcGIS

Dec 20 2020

Estou calculando áreas de um KML em QGIS, ArcGIS e GeoPandas e todos são diferentes, meus resultados são estes:

Geopandas ArcGIS QGIS
29,3498 28,500084 25,651554

O crs original do KML é 4326, então no QGIS e no ArcGIS primeiro, eu reprojeto o KML (no ArcGIS primeiro tenho que fazer do KML um shp ou recurso) e então calculo a área.

Verifiquei este post sobre o mesmo problema mas com QGIS, e calculo a área no QGIS como eles disseram, no ArcGIS fiz algo semelhante, primeiro configurei o sistema de coordenadas para o dataframe e depois recalculei a área, com GeoPandas I estou fazendo isso:

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

Caso alguém queira verificar o processo, os arquivos estão aqui

Respostas

5 KadirŞahbaz Dec 20 2020 at 03:00

No GeoPandas, você transforma o sistema de coordenadas geográficas do shapefile em um projetado conforme (preservação do ângulo, o que significa que não preserva áreas). Espera-se obter diferentes valores de área. Na verdade, neste caso, se você tivesse o mesmo valor no GeoPandas, então algo estaria errado.

Quando se trata de QGIS vs ArcGIS, existem muitas geometrias inválidas em seus dados. Se você aplicar a ferramenta Dissolve no QGIS, você verá isso. (Minha suposição) ArcGIS e QGIS podem estar lidando com geometrias inválidas de forma diferente ou estão fazendo algo que não temos conhecimento ou outra coisa.

Minha sugestão:

  • Depois de alterar crs, salve gdfusando gdf.to_file("new_file_path").
  • Em seguida, abra o novo arquivo de forma e compare as áreas.

Isso é o que eu tenho:

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

Essa resposta não explica perfeitamente por que as áreas são diferentes. Pelo menos, você se livrar do problema de diferentes áreas.