I have more than 2000 XYZ (only ground points) .txt files and I have to do Quality Control (QC).

Let's say I have file, which I converted to multipoint (or even singlepart feature). I have mean Z value for a file, but if most of the points are 20-40 metres, and two, three points per file are 70-80 metres (wrong Z values). How to catch these points and remove? On another hand, it could be that in another file 70-80 metres is common Z value and some points wrong Z value 120 metres. In another file 120 metres is common and correct.

How to find and remove points with wrong Z values in LIDAR data?

Standard deviation? Raster cells?

  • The problem with using standard deviation for finding outliers here is that there is an assumption made that the distribution of elevations is normal, which it likely isn't. Commented Oct 1, 2014 at 20:17
  • I asked before and here's a method that worked after reclassifying the high vegetation outliers as noise.- Las dataset pull down the first returns but unclick the noise 7/18 boxes then follow the DEM/DSM/CHM guidelines found on the Humboldt CA GIS site.
    – user69956
    Commented Mar 25, 2016 at 4:38

3 Answers 3


One alternative is Fusion. It is a free software for LiDAR processing and visualization.

I would do this in two steps:

  1. Convert the LiDAR xyz'.txt' files to '.las' with ASCIIIMPORT tool.
  2. Filter out ground returns* outliers using the '.las' file, with GroundFilter tool.

*from you comment under simplexios's answer I'm assuming the LiDAR data are only ground points..

Here is one example showing how to process the data.

  1. Install Fusion (place it at top hierarchy, right under directory C:).
  2. Open Fusion's Main Screen.
  3. Click "Tools", choose "Data conversion", and then: "Import Generic ASCII LIDAR data...".
  4. Browse you Ascii ".txt" file. Save it as: ".importparam" extension.
  5. Install Notepad++. Save notepad++ ".txt" file as ".bat" (batch file).

Let's suppose now:

  • Fusion is installed at the following directory: c:\Fusion;
  • both the ASCII ".txt" and ".importparam" files are stored in: c:\LIDAR;
  • the name of the files above are: "project.txt" and "project.importparam";
  • the output (".las") filename will be "project.las".
  • the output file with the point cloud without outliers will be "ground_filtered.las".

This is the syntax of Fusion's ASCIIIMPORT program command:

ASCIIImport [switches] ParamFile InputFile [OutputFile]

Using examples above, write the following code in Notepad++:

c:\Fusion\Asciiimport las/ c:\LIDAR\project.importparam c:\LIDAR\project.txt c:\LIDAR\project.las

Save the Notepad++ ".bat" file, before running it. Press F5 to execute it.

Now, use the GroundFilter command line. It will apply the algorithm of Kraus and Pfeifer (1998) that will remove the ground returns outliers.

The syntax of GroundFilter is:

GroundFilter [switches] outputfile cellsize datafile1 datafile2

Using the 'project.las' file, type the following command:

c:\Fusion\GroundFilter c:\LIDAR\ground_filtered.las 5 c:\LIDAR\project.las

Note that GroundFilter allows using more than one input file (datafile), which is your case.

Here I used a cell size of 5 (meters or feet). Tweak the cell size value according to the point cloud return density.

There are other algorithms to classify ground returns and also filter out ground outliers.

Here is an answer which shows how to use the Multiscale Curvature Classification (MCC) algorithm from Evans and Hudak (2007).

  • +1 Great advice. FUSION is an often overlooked Lidar processing package with incredible functionality.
    – Aaron
    Commented Aug 23, 2014 at 20:59

I have found Martin Isenburg's LAStools to be indispensable when working with LiDAR data. It can process LAS as well as ASCII (and a few other formats).

As an example:

las2las -clip_z 10 100

will filter out any points with Z values below 10 or above 100.

  • 1
    Common Z value differs per file. It could be that in another file 70-80 metres is common Z value and some points wrong Z value 120 metres. In another file 120 metres is common and correct. Commented Mar 19, 2013 at 16:22

Do you have access to orginal LAS/LAZ file ? It sounds like you have all lidar point in your XYZ file ,rather than only ground points.

And If you know good range for Z-Value tou can remove bad lines in Excel / OCalc, XYZ is jsut ascii text

  • Unfortunatelly, I have only ASCII text (no original .las files) and yes, it's only ground points. But what's the difference? LAS if it's only classified or scan angle below -30 or above 30. I can convert to multipoint/singlepart with ArcGIS or to .las with LAStools or LP360. Even I know the mean Z value for LAS dataset it makes no sense while for example I have a xyz file (or .las) which lowest point is 50, highest 150 (let's say one, o three points with wrong Z, buy we don't know yet), so Median will be 100, and MEAN is 85, but the MODE value is 55; 60; 70; 90; 95. Commented Mar 5, 2013 at 14:59
  • Maybe there is any option XYZ files converting into raster by cellsize 10, and finding wrong values? Commented Mar 5, 2013 at 15:03
  • Moreover, it's 2000 files! one by one? C'mon. Commented Mar 19, 2013 at 16:25
  • for i in (*.xyz) ; do perl_script_that_calculates_some_meaningful_range_to_keep_and_remove_other_points_from_xyz_file.perl $i ; done , now do you have idea howto get good range. You can probably do it eith one liner sed or regexp. Commented Mar 20, 2013 at 7:40

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.