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).
-replace z everything is ok, but the normalized point cloud isn't obtained.
Note the correct notation is
-replace_z with an underline "_" before z (not
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 you point cloud is in a projected coordinate system, such as an UTM projection.
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:
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.