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 .txt files and I have to do 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

3 Answers 3

Have you worked with US Forest Service's open source software Fusion? It processes LiDAR data in DOS environment.

This software converts ASC files to ".las" or ".lda" (see pages 6 and 23) I would try the following program command: ASCIIIMPORT (see the manual's page 23).

Here is how you can do it.

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

Let's suppose now:
a) Fusion is installed at the following directory: c:\Fusion;
b) both the ASCII ".txt" and ".importparam" files are stored in: c:\LIDAR;
c) the name of the files above are: "project.txt" and "project.importparam";
d) the output (".las") filename will be "project.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 run it. Press F5 to execute it.

Once you have your files in ".las" format, you can use the program command named GroundFilter (manual's page 88). It will apply the algorithm of Kraus and Pfeifer (1998) (see manual's page 89) that surely will remove your ground returns outliers.

Here is one answer (with code example) which shows how to run/execute GroundFilter.

EDIT: added code example of how to run ASCIIIMPORT and a link with code example of how to execute GroundFilter.

share|improve this answer

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.