5

I want to know what QGIS uses as a measurement when using the Geometry and $area function. As in is, the area calculated Sq meters?

I am getting two different answers when using Cadcorp SIS and QGIS:

Cadcorp SIS: 132068457.409951

QGIS: 131747637.35

My session is in British National Grid EPSG:27700.

enter image description here

enter image description here

enter image description here

3
  • 3
    the difference could come from the ellipsoidal vs planimetric measurement
    – J.R
    Jul 19, 2018 at 15:33
  • Try to set the qgis ellipsoid (in the measurement option) from Airy 1830 to none/planimetric to see if the difference in area disappear that mean that Cadcorp SIS give you planimetric result
    – J.R
    Jul 20, 2018 at 11:52
  • J.R setting the ellipsoid to none/planimetric has allowed the correct result to return in QGIS. Do you want to write an answer so I can mark it and correct?
    – Hutch
    Jul 23, 2018 at 8:16

3 Answers 3

7

The other answers are incorrect. The units are taken from the setting in Project Properties. Also keep in mind that the ellipsoid setting will affect area measurements, and is likely the cause of the difference between obtained measurements.

1
0

I believe the unit (of $area) depends on the projection. So in your case, $area should give you area in m^2.

The difference in answers might be due to the way they calculate areas, not sure about that.

Edit: You can check in layer properties the units by the CRS (Metadata) I've attached a picture from QGIS 2.18 showing the location, not sure if newer version have an easier way of locating units. enter image description here

0

Setting the ellipsoid (in the measurement option) from Airy 1830 to none/planimetric in QGIS allowed for $area feature in the field calculator to return the correct result.

The error still remained in PostGIS when exporting the original .SHP through Cadcorp SIS, the issue was caused by self-intersections in the polygon.

I found the best fix to be running an update on the geometry field with the ST_MakeVaild command.

I used : update tablename set geometryname = ST_MakeValid (geometryname)

You can also replicate the shapefile into an internal overlay and run the Simplify tool on the new internal overlay then export this file to your database. The Simplify tool removes self-intersections from your polygon within Cadcorp SIS.

2
  • 2
    I think you are ignoring the true reason for the difference in values. Check the help window for both $area and area() in the Expression String Builder. The former always calculates ellipsoidal area while the latter calculates planimetric area. Circumventing having to use the correct tool by brute-forcing the ellipsoid setting to planimetric is misguided.
    – Gabriel
    Jan 24, 2019 at 15:12
  • 2
    If for you the planimetric area is the correct area, then consider using area( $geometry) and you will get the flat area that the geometry occupies in its layer, in units of measure of the layer CRS. Even so, changing the measurement ellipsoid of the entire project and calculating the ellipsoidal area later, can solve the particular case. Just consider the other option too. Jan 24, 2019 at 16:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.