When I try to use lasheight with -replace z to normalize the point cloud, the height of points are changed (destroyed heights; see pictures below).

Without using -replace z everything is ok, but the normalized point cloud isn't obtained.

no -replace z with -replace z

  • The No. of points ~ 10,000,000. Commented Jul 24, 2016 at 5:31
  • The coordinate system is utm, and the datum is WGS84. Commented Jul 24, 2016 at 5:32
  • I use QGIS Nødebo 2.16, with "-replace_z". Commented Jul 24, 2016 at 5:34
  • I use: lasground, and then: lasheight (an unclassified point cloud without any raster model). Commented Jul 24, 2016 at 5:36
  • Considering the input file is an unclassified point cloud, and that you used lasground to generate a ground.las (i.e., a point cloud with only ground points); then use example 2 from my answer. Commented Jul 24, 2016 at 15:29

2 Answers 2


Note the correct notation is -replace_z with an underline "_" before z (not -replace z).

Certify what you are using as the reference for normalization; i.e.; you need something to subtract from the point's elevation: usually a DTM (raster), but lasheight will accept the own point cloud if it is already classified regarding ground points (class = 2), or a separate .las file having only ground points.

That being said, the argument -replace_z is not designed to solely normalize the point cloud, but to replace permanently the elevation values for heights in the input file, i.e., the original file. Take a careful read in the lasheight README for more info.

Also, make sure the point cloud is in a projected coordinate system, such as UTM projection.

Examples, using -replace_z:

If the point cloud is already classified, including ground points:

lasheight -i *.las -replace_z.

If it is not classified, but there is a separate .las file having only ground points:

lasheight -i *.las -ground_points ground.las -replace_z

If it is not classified, the ground truth is a DTM (raster) instead of point data:

lasheight -i *.las -ground_points dtm.asc -replace_z

In the last example, it will also support other raster formats such as .csv, .bil, .txt.


Besides adding the ground reference for normalizing the point cloud, there were other issues I had to address. They were:

  • bad scale factors x y z: 0.000000335839844, 0.000000499992188, 0.000000037939995 and bad offsets x y z: 31515000, 5686500, 42.900001525878906 of points, where scale factors had sub centimeter resolution.

So, before normalizing, I had to use the following command:

las2las -i input.las -rescale 0.01 0.01 0.01 -auto_reoffset -o fixed.laz

In the LAStools Google Group I posted more details about my LiDAR input file, and the full discussion until its resolution can be accessed here.


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.