5 votos

¿Geopandas y QGIS calculan diferentes valores de área de polígono?

Sólo intento entender por qué Geopandas y QGIS pueden calcular áreas de forma diferente a pesar de utilizar exactamente los mismos shapefiles y exactamente las mismas proyecciones.

Ambos shapefiles utilizan EPSG:53032 - Equidistante azimutal de la esfera . La cadena Proj4 es:

+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs

A pesar de ello, ambos han arrojado resultados similares, pero sustancialmente diferentes.

Resultados de QGIS:

QGIS Results

Resultados de Geopandas:

Geopandas Results

PARA SU INFORMACIÓN:

  • Los resultados de QGIS se calcularon utilizando la función $area de la calculadora de campo
  • Se puede acceder a los Shapefiles aquí si quieres jugar con ellos.
  • El código de Geopandas está más abajo:

    import pandas as pd import geopandas as gpd

    Import Shapefiles from Google Drive

    gdf = gpd.read_file('https://drive.google.com/uc?export=download&id=1RnniXEYTJAfazYKQBMIRphj_gloK9uSm')

    Update CRS

    newcrs = "+proj=aeqd +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6371000 +b=6371000 +units=m +no_defs"

    gdf = gdf.to_crs(newcrs) gdf["area"] = (((gdf['geometry'].area)/1000)/1000) # Divited by 1000 to convert into metres

    gdf.sort_values(['area'], ascending = False)

0 votos

¿Por qué estás convirtiendo tu shapefile a 'newcrs' cuando ya está en ese CRS? [Si no está en ese CRS, ¿lo está reproyectando también en QGIS?]

0 votos

¿Qué versión de QGIS utiliza?

0 votos

Gracias. La pregunta está respondida, pero para que conste, estaba usando la versión 3.6.5 de QGIS y también estaba reproyectando esto en QGIS.

5voto

RETAS Puntos 129

Cambie la proyección de su mapa QGIS para que coincida con su CRS personalizado: enter image description here

A continuación, vuelva a calcular sus áreas y usted debe obtener enter image description here

No estoy seguro de por qué esto importa, pero claramente QGIS obtiene alguna información para calcular el área de la CRS del lienzo (que parece tonto). Una forma de evitar esto es volver a proyectar y guardar el archivo shapefile, así que cuando usted lo tira en un lienzo de mapa fresco se establecerá automáticamente el lienzo a la misma CRS.

EDIT: la descripción de la herramienta de área indica:

El área calculada por este fun elipsoide y la unidad de superficie del proyecto. [ ] elipsoide para el proyecto, el área calculada será elipsoidal, y si no hay elipsoide, el área calculada será planimétrica. será planimétrica.

Cuando se vuelve a proyectar el shapefile, la configuración del elipsoide del proyecto (especificado por EPSG:4326 o cualquiera que sea el CRS del mapa) no cambia, por lo que es necesario cambiarlo manualmente para garantizar el mismo elipsoide que el CRS del nuevo shapefile.

3voto

nuecaster Puntos 128

QGIS tiene dos funciones de área diferentes. Una respeta la configuración del proyecto, mientras que la otra utiliza el sistema de referencia espacial de la capa. Para ver resultados idénticos al cálculo de área de GeoPandas, utilice area($geometry) de la $area .

  • $area

    El área calculada por esta función respeta tanto la configuración del elipsoide como la de la unidad de área del proyecto actual. Por ejemplo, si se ha configurado un elipsoide para el proyecto, el área calculada será elipsoidal, y si no se ha configurado ningún elipsoide, el área calculada será planimétrica.

  • area()

    Los cálculos son siempre planimétricos en el Sistema de Referencia Espacial (SRS) de esta geometría, y las unidades del área devuelta coincidirán con las unidades para el SRS. Esto difiere de los cálculos realizados por la función $area, que realizará cálculos elipsoidales basados en los ajustes de elipsoide y unidad de área del proyecto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X