Area measurement in 3D not correct


I’m currently comparing Pix4D (cloud), Dronedeploy and WebODM.
One of my findings is the area measurement of a roof is different between WebODM (~203m²) and Pix4D/Dronedeploy (~250m²) with the latter beeing the correct value.
It seems WebODM (Potree) is only giving me the 2D area even I measure in 3D. At least the value of 200m² is the 2D surface area which Pix4D and Dronedpeloy show.

If we calculate the roof of the shed manually we can easily do it by calculating both rectangles and add the value of both to the total area. In my example we have 19m x 6,7m = 127,4m² for one side.
127,4m² * 2 = 254,6m² → which matches Dronedeploy/Pix4D but not WebODM.

WebODM Area measurement

Dronedeploy Area measurement

1 Like

I think the tool in Potree measures the 2D area (as you found out?)

Unfortunately that’s not very obvious for the user.
What is the recommend tool for measuring in 3D when using WebODM?

No ideas? Is nobody doing any measurements in 3D?

You can’t measure 3D areas from a point cloud, you need a mesh created to be able to sum the area of the mesh faces in a boundary.

I don’t know if you can do it in ODM. I export the model to QGIS to perform other tasks and then compute areas and volumes there. But I think in other open source software for 3D objects like MeshLab or blender it can be a straightforward task.

Also, in your DroneDeploy screenshot seems to be some problem because the flat area says 256 m² instead of the 200 m² you said.

I don’t want to measure on a pre point cloud. I use the mesh / texture in Potree.

I assume you are not measuring 3D area in QGIS. I also tried this and it’s not working. You can import the 3D model in QGIS but the measurement in the 3D viewer is only performed on 2D based on the ortho.

The values of dronedeploy are correct. The area of the roof is 255m². Dronedeploy just gives an additional value for the profile area. This means it follows the shape of the individual bricks on the roof to give you even more detailed area calculation.

Ah, ok. I thought you were trying to measure the area in a point cloud, based on your screenshot of webODM.

I derive some products from the DEM, basically filtering and interpolating lot of things. Topographic areas are estimated with a GRASS algorithm ( I can’t do my work directly with the point cloud nor the mesh, but I think a direct area computation from the mesh, in a mesh manipulating software, must be simpler.

I don’t know about drone deploy, but I think can’t be more than a flat 2D area and a sum of mesh faces area inside a boundary. Maybe they triangulate the boundary nodes to be able to compute the 3D surface, by adding those triangles areas.

I’m just seeing this thread for the first time. I agree this is surprising, as I would expect the WebODM 3D area measurement and DroneDeploy area measurement values to be pretty close. I don’t use this feature much, but I assumed it was reasonably accurate.

Metashape has the same issue. There was a user request in 2021 but it was never implemented.
I checked and you get 200m² area when it should be 250m².
So only DD and Pix4D cloud actually measuring the 3D surface and provide the correct output of 250m² for the roof area. All other tools I checked are projecting the 3D polygon to the 2D surface and give you the wrong area (200m²) of the roof.

1 Like

Have you measured using meshlab or blender?

I couldn’t figure out how to measure it in blender. But I created this overview showing the issue and comparing DD, pix4D, metashape, Webodm/Potree and meshlab. I hope this makes my point clear.

3D Measurement summary

I tried r.surface based on the DSM but it gives me 290m² instead of the correct ~250m². So it is similar off to pure 2D measurement (205m²) in my case.

It is not necessary to discuss it here, but it depends on the roughness of the surface and is closely related to the size of the cells. (Think that each pixel is triangulated with its neighbors and the result is the sum of the area of all those triangles. Your calculation is the sum of four very large triangles instead.)
I still think that for your purpose a mesh manipulation software would be more suitable.

I think we have 3 cases, your are refering to case (3) but I’m talking about case (2).

(1) Measure an area on flat surface (2D)
(2) Measure an area taking into account Z-axis (3D Measurement)
(3) Measure an area taking into account Z-axis and surface profile ,e.g. each brick of a roof (3D profile measurement)

For (2) you don’t need any mesh. Points in a 3D space are enough. In my case I defined 6 points. 4 are the boundaris of the roof and 2 are the peak of the roof. One for each site. That’s all you need to calculate the surface in 3D in my opinion. A mesh is only needed for case (3).

Metashape and Potree ignoring the Z-Axis when calculating the area. So they can only do (1).
Pix4D can do (2) and Dronedeploy can even do (3). I would be happy to be able to measure (1) + (2).

Just to confirm… I tried my own experiment and confirmed that the 3D area measurement behaves as described by @xtc0r. As mentioned by Piero, this is a function of the 3D viewer library (Potree) so not really within the control of WebODM, but certainly worth noting. I believe that most users measuring in the 3D interface would desire (and even expect) the area measurement to account for Z axis.

Quick and rough measurements show ~3,525 sqft when manually calculating the surface area of the roof, but displayed area in 3D view is ~2,837 sqft. Much closer to the 2D displayed area (~2,756), which I suspect is due to inconsistencies in my measurement markings and my reckless rounding.


2D ortho view, with bottom-right segment @ ~18.5’ which is appropriate for a nadir measurement and removes vertical distance (Z axis).


3D model view, with bottom-right segment at ~23.7’, which is what you would get if you were standing on the roof with a tape.


1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.