I am working with QGIS 2 or 3

I have DSM and DTM already so I can calculate DSM - DTM:

enter image description here

Plus, I have shapefile with buildings' footprints.

How to calculate volume of every single building using DSM-DTM layer and add this value in m^3 to feature table? (Like with Zonal stats?)

  • 1
    If you are confident that DSM > DTM is met, then simply (pixel size)^2 * (DSM - DTM) will give you the answer. Then you can use Zonal Statistics tool on the output, too. – Kazuhito Jun 7 '19 at 11:52
  • So if I can estimate, that LIDAR gives 0.5m grid, can I just type in raster calculator (0.5 * 0.5) * (DSM-DTM)? Won't it give me a wrong volume? By the way, these pixels are 2m, 1m or 0.5m, depends on the situation, cause DSM and DTM is a merge of best possible data. – Vilq Jun 7 '19 at 12:04
  • Yep, apart from how you process LiDAR to produce the grid. By the way, what software do you use for processing LiDAR, may I ask? – Kazuhito Jun 7 '19 at 12:06
  • Never mind. Just thought it would help to find the level of confidence about the DSM-DTM relationship. Somewhere in the process to rasterize the point cloud you will face uncertainty in accuracy of z-value. That's all. – Kazuhito Jun 7 '19 at 12:30
  • 1
    As far as I can see your approach is robust and productive at the same time. However, if your ultimate goal is viewing it in 3D space, why don't you use point-cloud oriented software? I highly recommend Cloud Compare which can calculate volume and allow you 3D view, and easy handling of ASCII inputs. – Kazuhito Jun 7 '19 at 13:19

Proposal for a more robust approach

A more robust approach would probably entail:

  1. Using the building footprint shapefile, calculate median height of DSM inside each feature. This will represent the absolute height of each building.
  2. Using the building footprint shapefile, calculate median height of DTM inside each feature. This will be the absolute height of the terrain under each building.
  3. Compute the difference of the two, DSM-DTM. This is the relative height of each building.
  4. Compute the volume multiplying the area of each feature (i.e. the footprint of each building) by its relative height.

LAS median


  • Use the median, not the average of pixel values in order to exclude the contributions of erroneous pixels/points. You don't want to bring into the average the height of chimneys not the values of point which are at ground level, but happen to be included in an abundant footprint.
  • If you can, calculate the median values directly from the imported *.asc files (i.e. as vector points, not interpolated raster). Interpolation by definition brings in an additional uncertainty.
  • This is a pretty simple/simplistic approach, which assumes flat roofs, as per your original request. If you are into more precise calculations, there are specialized software to do that which take into account the gutter, the full of the roof, different root flaps, chimneys, false roof points, etc.
| improve this answer | |
  • Just not sure, I did it, but what about properties that are not regular at all in shape, have very sloped roofs and/or one part very tall and the rest one storey improvement? Info about these irregularities is available in LiDAR files, but will these medians deal with that as well? – Vilq Jun 7 '19 at 15:52
  • 2
    I second @Vilq given the original data is LiDAR and the subject is the building (i.e. high aspect), approximated calculation using the already gridded raster is too simplistic, and I do not feel it is useful for further analysis. (Maybe I am wrong...). – Kazuhito Jun 7 '19 at 16:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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