I have to calculate or estimate the surface area (sq m) considering the elevation data on several places (wich i have in different shapefiles, and some multipolygon shapefiles).

I'm aware of this QGIS calculate the 3d surface area of a region? but this is only for rectangular polygons.

I have the shapefiles and the DEM. Working on QGIS 2.14

1 Answer 1


The following method would make a reasonable approximation knowing that your raster DEM is a discretization of space.

  • Compute the slope of your DEM (this will give you the strongest slope) Raster > Analyses > DEM

  • Use the slope to compute the area of each pixel (using the raster calculator , projected_area_of_the_pixel / cos(slope_in_radian) )

  • Use zonal statistics to have the sum of the "non projected" area of the pixels in the zone (QGIS geoprocesing tools > raster tools > zonal statistics)

  • I´ve tried the method in a known area to see the difference. it over-estimeted the area by more than 30%. that´s too much. Jan 25, 2018 at 16:55
  • also have to add that the angle must be transformed to radians, since that´s the angle unit that the Raster Calculator uses. Jan 25, 2018 at 16:56
  • maybe you should try smoothing your DEM, because a few pixels with wrong elevation could create slope artefacts which in turn lead to huge overestimation. I now directly mention radian, thanks for pointing this.
    – radouxju
    Jan 29, 2018 at 14: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.