Skip to content
Contains code/project notes/ and Data for GEO+CS lidar data processing
C++ Python Makefile Shell
Branch: master
Clone or download


Contains code/project notes/ and Data for GEO+CS lidar data processing


The PulseWaves format is a new, open, vendor-neutral, LGPL-licensed and LAS-compatible data exchange format that is aimed at storing the entire digitized waveform instead of discrete returns(like the LAS format) in a fully geo-referenced manner. The PulseWaves format consists of two binary files: pulse files(.pls) that describe the emitted laser pulses via a georeferenced origin and target point and waves files(.wvs) that contain the actual samples of the outgoing and returning waveform shapes for the digitized sections of the emitted and received waveforms.

This project aims at developing full waveform LiDAR processing tools based on the PulseWaves data exchange format


Installation on Boise State's R2 cluster

  • Clone the repository: git clone
  • After cloning the directory,
    • Load the following modules:
      • module load gsl/gcc/2.4
      • module load gdal/intel/2.2.2 this should automatically load other modules that are required

Installation on a local machine running CentOS 7 linux distribution

$>./configure --prefix=/usr
$>make check
$>sudo make install

$>gsl-config --lib
$>./configure --prefix=/usr
$>sudo make install

test that gdal installed with gdalinfo --version

  • add the library path for the linker export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH

After GDAL and GSL have been loaded/installed

  • Run the install script ./ to automatically download, update & build the dependencies, and make the executables.
    • For R2 users, if you had errors during the installation process you most likely have a module loaded that is causing a conflict. We recommend you remove all modules module purge and load only the ones required to make the executables.
  • If the install script ran successfully, you can find the executables in either your choice of directory if you so chose during installation, or the bin/ folder of the adapt-lidar-tools directory.

Note: After running the install script to make sure the dependencies are built, you can at any time regenerate the executables by running make geotiff-driver or make pls-info. To cleanup and remove all executables and object files , run make clean.

The waveform samples of the pulses that are reported in the Pulse Records are stored in a separate Waves file that must be in the same directory and have the same base name as the *.pls file, but have the ending *.wvs.

Implemented Products

These are the properties the program can analyze currently. For each property of interest, a comma separated list of product numbers specifies the desired output.


  • Short flag -a
  • Long flag --amplitude


  • Short flag -e
  • Long flag --elevation


  • Short flag -w
  • Long flag --width

Rise Time

  • Short flag -r
  • Long flag --risetime

Backscatter Coefficient

  • Short flag -b
  • Long flag --backscatter


Combine the property type flag above with one or more product types below to generate products

Function Peak Type Product Number
Max First 1
Last 7
All 13
Min First 2
Last 8
All 14
Mean First 3
Last 9
All 15
Std.Dev First 4
Last 10
All 16
Skew First 5
Last 11
All 17
Kurtosis First 6
Last 12
All 18

Sorted by Product Number

Function Peak Type Product Number
Max First 1
Min First 2
Mean First 3
Std.Dev First 4
Skew First 5
Kurtosis First 6
Max Last 7
Min Last 8
Mean Last 9
Std.Dev Last 10
Skew Last 11
Kurtosis Last 12
Max All 13
Min All 14
Mean All 15
Std.Dev All 16
Skew All 17
Kurtosis All 18


//generate max first elevation, min first elevation, mean first elevation
bin/geotiff-driver -f etc/test-file-1.pls -e 1,2,3
//generate first amplitude, min last amplitude, skew all amplitude
bin/geotiff-driver -f etc/test-file-1.pls -a 4,8,17
//generate max all width, skew last width, min all width
bin/geotiff-driver -f etc/test-file-1.pls -w 13,11,14
//combine the three above commands into a single run for efficiency
bin/geotiff-driver -f etc/test-file-1.pls -w 13,11,14 -a 4,8,17 -e 1,2,3

Product Definitions


raw amplitude data


Estimated amplitude using Gaussian fitting

Full Width Half Maximum (fwhm)

Estimated pulse width


Height on Z axis(Elevation from mean sea level (MSL))


Number of peaks

Backscatter Coefficient

The backscatter coefficient compares the emitted pulse to the returning pulse within a plane normal to the path of the emitted pulse centered at the location of the peak of the returning pulse.

Rise time

Leading edge (Time between the activation point and maximum amplitude at the rising edge of each pulse)

Total Energy

Total energy from the estimated wave (summation of all amplitudes from wave triggering location to the wave end). Wave triggering location is found by the location that has amplitude value of max amplitude * 1/e(1).

You can’t perform that action at this time.