8 votos

¿El cálculo del área en QGIS se realiza de dos formas diferentes?

Parece que hay al menos dos formas diferentes de calcular el área de un polígono en QGIS usando Python:

1) area = feature.geometry().area()
2) d = QgsDistanceArea()
   area_v2 = d.measurePolygon(feature.geometry().asPolygon()[0])

Estos dos enfoques producen resultados muy similares, pero no iguales. También parece que QGIS prefiere el segundo enfoque - una vez que la columna de geometría se añade a través de Vector -> Export/Add Geometry Columns. Presumiblemente, esto está relacionado con las proyecciones. Sin embargo, todo lo que trato en QGIS es en EPSG:3857 ya que estoy utilizando datos OSM. Además, los valores de perímetro obtenidos de este enfoque coinciden con el primer enfoque cuando se ejecuta la siguiente sentencia:

 perimeter = feature.geometry().length()  

Me inclino por el primer enfoque debido a su simplicidad, así que ¿por qué QGIS se basa en el segundo?

5voto

Mue Puntos 2469

Creo que esto se describe en el Documentos QGIS: Predicados y operaciones geométricas :

Las áreas y perímetros no tienen en cuenta CRS cuando se calculan utilizando estos métodos de la clase QgsGeometry. Para un cálculo más potente de áreas y distancias, se puede utilizar la clase QgsDistanceArea. Si las proyecciones están desactivadas, los cálculos serán planares, de lo contrario se harán sobre el elipsoide. Cuando no se establece explícitamente un elipsoide, se utilizan los parámetros WGS84 para los cálculos.

Así que, efectivamente, tu primer método es el más sencillo. Además, creo que depende de la herramienta que utilices, ya que algunas están codificadas para utilizar QgsDistanceArea() y otros no. Al final, todo depende de la extensión de la zona que vayas a examinar y del nivel de precisión que desees.

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