Re: [LAStools] Waveforms in LAS-1.4+WDP data

Skip to first unread message

Martin Isenburg

Feb 23, 2018, 4:21:47 AM2/23/18
Hello Andres,

I'm travelling between remote islands in the Philippines at the moment, so a more detailed answer will have to wait. But have a look at this document here that may clarify things. If it does not you - or anyone else for that matter - could help us make it more clear in the next revision of the LAS specification:



On Thursday, February 22, 2018, andres <> wrote:

Dear Martin,

Thank you for your detailed comments.

Below is a fragment of the output 'las2txt -i ?.las -parse xyzirnatXYZwWV' of the LAS data collected with a
RIEGL_VQ-1560i over hemiboreal forest. In a 20x20 m fragment of data only 17% of pulses have waveforms.
Why so many pulses have no waveform?

I assume the issue is that it's impossible to store every waveform due to the high amount of data. I assume the VQ is sort of a mix between the V-line and the Q-line of RIEGL scanners.

The pattern of waveforms is surprisingly random. Attached is the x-y-plot of Channel_2 data in this fragment.
Red dots are the first returns, green crosses are the coordinates of the discrete returns to which are
the waveforms linked in the las2txt output.

The scanner belongs to the Land-Board and they did the aquisition. They cannot comment the WF pattern.

How to find the x, y, z coordinates of the waveform samples?
 I am still at loss

> The position along the wave is given by:
>    X = X0 + X(t)
>    Y = Y0 + Y(t)
>    Z = Z0 + Z(t)
> X0, Y0, Z0 are the position of the “anchor” point.

There is the anchor point in the Pulsewave record but which is the anchor point and time 't' in the las2txt output of LAS_1.4 record?

The sample WF in my original posting is linked to the discrete return 4 of 4, first three discrete returns have no waveform.
There are pulses where WF segments are at the 2nd and 4th discrete returns of the same pulse.

# scale factor x y z         0.00025 0.00025 0.00025
# offset x y z               693333 6464372 192
695333.84 6464819.08 59.45 r=1 n=4 no_waveform
695333.89 6464819.02 57.26 r=2 n=4 no_waveform
695334.02 6464818.86 51.44 r=3 n=4 no_waveform
The returns r=1, 2, 3, 4 have the same GPS time 181652056.289710
695334.08 6464818.79 48.845 r=4 n=4 t=181652056.289710 X Y Z 181204044 dx=-3.35549e-06 dy=4.15178e-06 dz=0.000149762

> 181204044     :  W (2nd is the wavepacket offset)

Which offset this is? Is it the time offset (in picoseconds?) or the offset of the WF in bytes in the file?

X, Y, Z are the scaled and shifted coordinates of the discrete return,
offset x y z, scale factors, and X, Y, Z allow to calculate the position of discrete returns:

x_4 = X_offset + x_scale*X_4
y_4 = Y_offset + y_scale*Y_4
z_4 = Z_offset + z_scale*Z_4 : 192 + 0.00025*(-572620) = 48.845

But where is the first sample of the WF? Or the last sample?
Is the last sample of the WF linked to the last discrete return?
If the wavepacket offset is in time units then which is the start time?
If the wavepacket offset were in picoseconds then I got nonrealistic result for the offset in meters:
181204044(ps)*0.000149762(m/ps) = 27137.5 m!

Thank you!


Download LAStools at
Be social with LAStools at
Manage your settings at

Evon Silvia

Feb 23, 2018, 12:03:37 PM2/23/18
Yes, please do provide feedback on that article, as it was designed to help folks understand the LAS half of the discussion. The various fields in Martin's las2txt waveform extractors line up tightly with the spec, so that's a good place to start.  Thanks for linking that github article Martin! And thanks again for putting those graphics together a while back. 

Talking to my colleagues more familiar with the Riegl sensors, Martin's got it pretty close with the VQ scanners. They do online (i.e., in-air) waveform processing to digitize returns immediately, and have the option to also record waveform data for advanced processing. It's quite common for the VQ sensors to record waveform for "every Nth" pulse, rather than every pulse. If I remember correctly, this was a requirement on the previous-generation sensors (e.g., VQ-820-G) in part because of the data volume. I believe the current-generation sensors can record all waveforms, but again the data volume makes it restrictive. This is controlled during data acquisition. In your case it looks like the sensor was set to record FWF data with every 6th pulse.

Evon Silvia PLS
QSI Solutions Developer
ASPRS LAS Working Group Chair

Quantum Spatial
517 SW 2nd Street, Suite 400, Corvallis, OR 97333

Reply all
Reply to author
0 new messages