Normalize and Denormalization with lasheight

89 views
Skip to first unread message

Evan Carlson

unread,
May 8, 2025, 10:05:20 AMMay 8
to LAStools - efficient tools for LiDAR processing
Hi there,

I have a point cloud that i'd like to normalize and it seems pretty straight forward to do this with lasheight like this:

lasheight -i nypc.laz -replace_z -o nypc_normalized.laz 

After normalization I would run a couple other processes. The piece i'm concerned with is once i've completed the other processes, how would I denormalize the point cloud to return the original heights? 

LAStools - efficient tools for LiDAR processing

unread,
May 8, 2025, 12:56:33 PMMay 8
to LAStools - efficient tools for LiDAR processing
Hi Evan,
if you need the non-normalized height after normalization there are several options. Those are the 2 most recommended ones:
(a) do not use "-replace_z", by default the height is stored in the user_byte, or optional in an extra_byte/attribute.
Then use e.g. lasclassify64 with argument -height_in_attribute [n] or just without -height_in_z to get the normalized height from the field where the height was stored.
(b) if you want to visualize the normalized height e.g. in laslook the "-replace_z" argument is useful. Just make different directories for the normalized and non-normalized data and use the directory you need. Maybe use lascopy64 to copy classifications or other fields between the data directories.

Cheers,

Jochen @rapidlasso

Evan Carlson

unread,
May 8, 2025, 2:22:55 PMMay 8
to LAStools - efficient tools for LiDAR processing
Thanks Jochen, for clarification, by default lasheight will store the z values into the user_byte if you -replace_z?

Then when you non-normalize, you would just pull the z values out of the user_byte, is that correct?

LAStools - efficient tools for LiDAR processing

unread,
May 8, 2025, 2:28:46 PMMay 8
to LAStools - efficient tools for LiDAR processing
Hi Evan,
please see the readme file or the laslook-doc page:

-replace_z                      : store heights to z coordinate (instead of in dm in user_data field). original elevations are lost.  
-store_as_extra_bytes           : store height with cm precision as short in "extra bytes" (instead of in dm in user_data field)
-store_in_user_data             : store also in user_data field (even when storing to z coordinate or as extra bytes)  
                                  (this is default)
-store_precise_as_extra_bytes   : store height with mm precision as int in "extra bytes" (instead of in dm in user_data field)  

So if you do not use replace_z you do not need to do a "non-normalize" - because your z values have not been touched.
Please always use the 64 bit version and best with -v argument to see what the tool is doing.

Cheers,

Jochen @rapidlasso
Reply all
Reply to author
Forward
0 new messages