Read and Write 'las' and 'laz' Binary File Formats Used for Remote Sensing Data

Read and write 'las' and 'laz' binary file formats. The LAS file format is a public file format for the interchange of 3-dimensional point cloud data between data users. The LAS specifications are approved by the American Society for Photogrammetry and Remote Sensing <>. The LAZ file format is an open and lossless compression scheme for binary LAS format versions 1.0 to 1.3 <>.

CRAN Github licence

R package to read and write .las and .laz binary files used to store LiDAR data.

rlas relies on a modified version of the open source parts of LAStools. LASlib and LASzip were modified to be compatible with R. The library can therefore be compiled into R without any complaints from R CMD check. It enables users to read and write into R binary files commonly used to store LiDAR data in R both at the R level and at the C++ level.

  • The latest released version from CRAN with
  • The latest development version from github with
devtools::install_github("Jean-Romain/rlas", dependencies=TRUE)

To install the package from github make sure you have a working development environment.

  • Windows: Install Rtools.exe.
  • Mac: Install Xcode from the Mac App Store.
  • Linux: Install the R development package, usually called r-devel or r-base-dev

Read las and laz files

At the R level

lasdata   = readlasdata("<myfile.las>")
lasheader = readlasheader("<myfile.las>")

At the C++ level

Linking rlas into your c++ code.

// [[Rcpp::depends(rlas)]] 
#include <rlasstreamer.h>
// [[Rcpp::export]] 
List readlasdata(CharacterVector ifiles, CharacterVector filter)
    RLASstreamer lasstreamer(ifiles, filter);
    return lasstreamer.terminate();
  catch (std::exception const& ex)
    Rcerr << "Error: " << ex.what() << std::endl;


See changelog here

Copyright Information

rlas contains code written by both Jean-Romain Roussel and Martin Isenburg. The latter is included for technical reasons. Details below.

  • For LASlib and LASzip:
    • (c) 2007-2015 [email protected] -
    • Provided under LGPL license and modified to be R-compliant by Jean-Romain Roussel. Each modification is dated and registered into the file headers.
  • For rlas code enabling Martin Isenburg's code to be wrapped into R:
    • (c) 2016 Jean-Romain Roussel
    • Provided under GPL-3 license.


rlas v1.1.9 (Release date: 2018-01-17)


  • Fix a segfault when reading extrabytes

rlas v1.1.8 (Release date: 2018-01-15)


  • new straighforward C++ class RLASstreamer to use rlasat the C++ level.
  • Support of extra bytes attributes in readlasdata


  • Fix some internal features which cannot be used by regular users. Does not affect users.

rlas v1.1.5 (Release date: 2017-10-23)


  • writelax enable for writing LAX files.
  • readlasdata enable for reading several files.
  • Moved the headers in inst/include to make the lib callable from other packages


  • The las files were read twice every time. lasdatareader is twice faster reading files only once
  • readlasdata enable to load or not the gpstime field.

rlas v1.1.4 (Release date: 2017-07-26)


  • Solved the compilation issue on CRAN with clang++ and gnu++11

rlas v1.1.3 (Release date: 2017-06-09)


  • Fix [#4] bug of computer precision when writing files
  • Fix [#61] wrong header size for files version 1.3


  • Update LASlib and LASzip
  • Better integration of LASlib and LASzip in R

rlas v1.1.2 (Release date: 2017-05-04)


  • Write the proper RGB colors instead of 0.

rlas v1.1.1 (Release date: 2017-03-15)


  • [#3] readlasdata() is able to read file when LAS specifications are not respected.


  • writelas performs tests on the header before entering C++ code (enable to fail with informative errors).

rlas v1.1.0 (Release date: 2017-02-04)


  • readlasdata() gains a parameter filter enabling to use memory optimized streaming filters.
  • readlasdata() support .lax file for faster filter (thanks to Florian de Boissieu #2)


  • All the default options for readlasdata() are now TRUE


  • readlasheader() is now able to read the Variable length record

rlas v1.0.3 (Release date: 2016-12-24)

CRAN does not build binary packages. After exchanges with prof Bryan Ripley

  • Change: removed CXX_STD flag in Makevars. g++ compile whith flag -std=c++98
  • Change: removed std::to_string, replaced by a macro ISO C++98
  • Change: replaced formats specifiers which were ISO C++11 but not ISO C++98
  • Change: added prepocessor statements to get proper path to libraries when clang++ is used with flag -stdlib=libc++
  • Change: title in DESCRIPTION according to prof Bryan Ripley
  • Change: description in DESCRIPTION according to prof Bryan Ripley

rlas v1.0.2 (Release date: 2016-12-23)

Third submission

  • Change: Manually list sources in makevars
  • Change: Remove SystemRequirements field in DESCRIPTION

rlas v1.0.1 (Release date: 2016-12-22)

Second submission

  • Add: runnable examples in documentaion
  • Add: tiny 755 bytes 'laz' file
  • Change: single quoted 'las' and 'laz' in Description and Title fields in DESCRIPTION

rlas v1.0.0 (Release date: 2016-12-22)

First submission

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


1.1.9 by Jean-Romain Roussel, 2 months ago

Report a bug at

Browse source code at

Authors: Jean-Romain Roussel [aut, cre, cph], Martin Isenburg [cph] (Is the author of the LASlib and LASzip libraries), David Auty [ctb] (Reviewed the documentation), Pierrick Marie [ctb] (Helped to compile LASlib code in R), Florian De Boissieu [ctb] (Enable support of .lax file and extra byte attributes)

Documentation:   PDF Manual  

GPL-3 license

Imports data.table, Rcpp

Suggests testthat

Linking to Rcpp

Imported by lidR.

See at CRAN