Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

i have two Lidar las files, one is original let's say with X points. And the other is copy of the first las file but with Y points, where Y is less than X. Now, i wanted to compare how the Digital Elevation Models of these two las files vary... I wanted to get information like RMSE, standard deviation, etc... I would appreciate, if anyone could tell me what softwares, or ways to get the comparison info... Thanks!

share|improve this question
Perhaps you could edit the question to use M and N (instead of X and Y). At first reading I thought X and Y were the coordinate values! –  Mark Ireland Oct 14 '10 at 17:15
You really do need to provide more information to receive relevant help. Your current question makes very little scene. Which field in your las file is holding the values. The way ground classified are assigned in the las format are a classification field and not different z (elevation) values. A vendor would have had to used on of the unassigned fields to hold a difference in z values. –  Jeffrey Evans Apr 7 '13 at 23:21
add comment

4 Answers

You can do this through the ESRI ArcGIS Geostatistical Analysis Extension - there is a section in the help on performing validation on subsets.

You could do the same through GRASS through the R interface. Tomislav Hengl describes in some detail how to do so in his book A Practical Guide to Geostatistical Mapping. It's open access, so the PDF is free to download.

share|improve this answer
add comment

This answer was edited based on an attempt to incorporate @JeffreyEvans's suggestions.
It was divided into two parts plus references:

  1. How to compare two Digital Elevation Models (DEM) (addresses the question directly);

  2. How to construct DEMs starting from a gross LiDAR cloud (since it was not clear on the question if the O.P. already had the DEMs built, this part provides a repository for the full process).

  3. References.

Part 1: solution using the software R.

#Creating a reproducible example


  #simulating raster_1

  f = system.file("external/test.grd", package="raster")
  DEM_1 = raster(f)

  #simulating raster_2

  DEM_2 = DEM_1
  # replacing values from raster_1 to create a new raster sample (raster_2)
    DEM_2[(DEM_2>500 & DEM_2<900)] = 550
    DEM_2[(DEM_2>200 & DEM_2<300)] = 500

# Comparison 1 (DEM_3 resulted from subtracting DEM_2 from DEM_1)

  DEM_3 = DEM_1 - DEM_2


    plot(DEM_1, main = "DEM_1")
    plot(DEM_2, main = "DEM_2")
    plot(DEM_3, main = "DEM_3 = DEM_1 - DEM_2")


enter image description here

#Comparison 2 (histogram)

  hist(DEM_1, prob=T, main="DEM_1", xlab="")
  hist(DEM_2, prob=T, main="DEM_2", xlab="")
  hist(DEM_3, prob=T, main="DEM_3 = DEM_1 - DEM_2", xlab="")


  standard_deviation = sd(c(as.matrix(DEM_3)),na.rm=T)


enter image description here

#comparison 3 (RMSE)


  DEM_1_matrix = c(as.matrix(DEM_1))
  DEM_2_matrix = c(as.matrix(DEM_2))

  rmse = rmse(DEM_1_matrix,DEM_2_matrix)
  [1] 135.3675 # this is the root mean squared error (RMSE) result.

See @whuber's answer on comparing two TINs for a theoretical insight about this issue.

Part 2: Constructing lidar DEMs using R + software Fusion + Multiscale Curvature Classification (MCC) algorithm.

enter image description here

Fusion is a free software for lidar processing and visualization developed by the United States of America forest service (McGoughey, 2013).

"MCC-LIDAR is a command-line tool for processing discrete-return LIDAR data in forested environments" (Evans & Hudak, 2007).

Firstly, let's create a hypothetical situation to illustrate the below code example:

i) Fusion and MCC-LiDAR are installed under the following directories, respectively:


ii) the 2 lidar clouds (".las" files) are stored in the below directory with the following names:


iii) the outputs which are going to be the DEMs will be stored as it follows:


iv) other intermediate files will be stored under C:\lidar\project

In R:

#Ground return classification with MCC algorithm.
# MCC syntax: 

#cloud 1
system ("C:\\MCC\\bin\\mcc-lidar.exe -s 0.5 -t 0.07 

#cloud 2
system ("C:\\MCC\\bin\\mcc-lidar.exe -s 0.5 -t 0.07 

Read: How to Run MCC-LiDAR link and Evans & Hudak (2007) work (see "References" section below),
to understand better how the scale (s) parameter and the curvature threshold parameter (t) works.
They need to be calibrated to avoid the commission/labeling errors (when a point is classified as belonging to the ground but actually it belongs to vegetation or buildings). See picture bellow.

enter image description here

For more ground algorithm options see Meng et al. (2010).

#Creating the DEMs (".dtm" files). See Fusion's manual page 82.
# GridSurfaceCreate syntax:  
        # command  
        # output_file  
        # cellsize xyunits zunits coordsys zone horizdatum vertdatum  
        # input_file  

#DEM_1 (".dtm" file)
system ("C:\\Fusion\\GridSurfaceCreate /class:2  
1 M M 1 22 0 0  

#DEM_2 (".dtm" file)
system ("C:\\Fusion\\GridSurfaceCreate /class:2  
1 M M 1 22 0 0  
#cellsize and other parameters needs to be adjusted according to the user's place and demand (e.g. set the zone and the pixel size).

#Converting ".dtm" DEMs to ".asc" DEMs. See Fusion's manual page 56.
#DTM2ASCII syntax:  
       #output_file (automatic)  

#DEM_1 (".asc" file)  
system ("C:\\Fusion\\DTM2ASCII  

#DEM_2 (".asc" file)  
system ("C:\\Fusion\\DTM2ASCII  

library(adehabitat) #import asc

#Import asc DEMs in R.  

DEM_1_asc = import.asc("C:\\lidar\\project\\dem_1.asc")  
DEM_2_asc = import.asc("C:\\lidar\\project\\dem_2.asc")

#Convert asc DEMs to R raster format.


DEM_1 = raster(DEM_1_asc)
DEM_2 = raster(DEM_2_asc)

This point goes back to part 1 of this answer.


Evans, Jeffrey S.; Hudak, Andrew T. 2007. A multiscale curvature algorithm for classifying discrete return LiDAR in forested environments. IEEE Transactions on Geoscience and Remote Sensing. 45(4): 1029-1038.

McGaughey, R. J. (2013). FUSION / LDV : Software for LIDAR Data Analysis and Visualization. Seatlle, WA.

Meng, X., Currit, N., & Zhao, K. (2010). Ground Filtering Algorithms for Airborne LiDAR Data: A Review of Critical Issues. Remote Sensing, 2(3), 833–860. doi:10.3390/rs2030833

Silva, A. G. P. da, Gorgens, E. B., Rodriguez, L. C. E., Silva, C. A., Alvares, C. A., Campoe, O. C., & Stape, J. L. (2012). Influência da janela do filtro de terreno em dados LiDAR sob duas coberturas florestais. In C. Lingnau, J. R. dos Santos, & E. da S. Lopes (Eds.), X Seminário de Atualização em Sensoriamento Remoto e SIG Aplicados à Engenharia Florestal (Vol. 10, pp. 65–72). Curitiba, Brazil: 10seminarioflorestal.com.br.
*abstract and pictures' caption are available in English.

share|improve this answer
The original question is quite unclear but your answer makes very little sense in the context of the information provided. Why would you perform an independent ground classification if you already had z values to compare? By the way, the Vogelmann slope classification available in Fusion performs very poorly and is rarely used. Even Bob McGaughey (FUSION developer) recommends against using it. –  Jeffrey Evans Apr 7 '13 at 23:27
Sorry I got the author incorrect. In an early version of FUSION the Vogelmann algorithm was available but was quickly abandoned. Just because somebody uses an algorithm does not mean that it performs well. I use to work for USFS-RMRS as a research ecologist and, in fact, worked in collaboration with Bob. The algorithm in question does not work well in high biomass forested areas with terrain. –  Jeffrey Evans Apr 8 '13 at 1:06
The Pfeifer algorithm is easy to code so is was made available in FUSION to provide continuity in workflow. This is not a widely used approach in the lidar community and I cannot think of a single paper that singled it out and utilized this method. Additionally, many FUSION users are either using the vendor provided ground classification or an alternative algorithm. Your recommendation would bring bias associated with both the ground classification algorithm and GridSurfaceCreate, which does not perform as well as an interpolation model. –  Jeffrey Evans Apr 8 '13 at 1:13
add comment

As far as I know, RMSE is only stated during the making of the DEM, and not as an attribute for further refrence, so you'de have to "catch it" manually during the making of the DEM (that said, I never made a DEM from Lidar, only from other data).

If you want to see the differences between the DATA inside the two DEMS, I'd use cut/fill which is in the Spatial Analyst extension of ArcGIS (under "Surface Analysis"). The cut/fill shows you in a simple thematic map the changes between the DEM's.

share|improve this answer
Cut/fill is too crude because it does not quantify the differences. RMSE is a general way to compare two datasets: not only is it useful to compare a DEM to ground-truth data, it is one way to quantify differences between two DEMs. –  whuber Oct 14 '10 at 14:54
add comment

I would do a simple DEM of difference. DEM2-DEM1. This will show all areas that are different and by how much.

Theres an image to a high res dem of difference on my website homepage. thadwester.com
Take a look at the colorful left image.

share|improve this answer
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.