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 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?

share|improve this question
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. –  WhiteboxDev Oct 1 at 20:17

3 Answers 3

Have you worked with Fusion/LTK? 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).

share|improve this answer
+1 Great advice. FUSION is an often overlooked Lidar processing package with incredible functionality. –  Aaron Aug 23 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.

share|improve this answer
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. –  Marius Bartašius Mar 19 '13 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

share|improve this answer
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. –  Marius Bartašius Mar 5 '13 at 14:59
Maybe there is any option XYZ files converting into raster by cellsize 10, and finding wrong values? –  Marius Bartašius Mar 5 '13 at 15:03
Moreover, it's 2000 files! one by one? C'mon. –  Marius Bartašius Mar 19 '13 at 16:25
for i in (*.xyz) ; do perl_script_that_calculates_some_meaningful_range_to_keep_and_remove_other_point‌​s_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. –  simplexio Mar 20 '13 at 7:40

Your Answer


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

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