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

lasdata   = read.las("<myfile.las>")
lasheader = read.lasheader("<myfile.las>")


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.2.9 (Release date: 2018-10-26)

  • write.las writes the epsg code in the header.

rlas v1.2.6 (Release date: 2018-08-20)


  • check_data now check the adequation between the ReturnNumberand the NumberOfReturns


  • las format 7 was supported at the C++ level when reading a file but an old test still throw an error at the R level stating that this format was not supported.
  • fix several compilation warnings on CRAN


readlasdataand readlasheader were definitively removed.

rlas v1.2.4 (Release date: 2018-06-10)

  • Reupload on CRAN after being removed.

rlas v1.2.3 (Release date: 2018-05-17)


  • Read the classification flags in fields Synthetic_flag, Keypoint_flag and Withheld_flag.


  • Fix: point in polygon includes the points that define the polygon.
  • Fix: [#21] writing a vector that contains only NAs in extra bytes
  • Fix: additional warnings on CRAN with gcc 8+
  • Fix: [#19] additional errors on CRAN with valgrind

rlas v1.2.1 (Release date: 2018-04-13)


  • Fix: [#18] additional errors on CRAN with ASAN and USBAN

rlas v1.2.0 (Release date: 2018-04-10)


  • Enables the support of files with point data formats 6, 7 and 8 in read mode.
  • Enables the support of extra bytes attributes in write mode.
  • New function read.las that replaces readlasdata, which is now deprecated. The selection of the field to be loaded is made easier by use of string syntax instead of multiple logical parameters.
  • New function read.lasheader that replaces readlasheader, which is now deprecated. This change was made only for naming consistency.
  • New functions header_* that allows the user to make valid headers and thus properly write the las files.
  • New functions check_* that check data integrity.


  • Fix [#9] with valgrind: uninitialized value(s)

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 that cannot be used by regular users. Does not affect users.

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


  • writelax enabled for writing LAX files.
  • readlasdata enabled 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 as fast since it reads files only once
  • readlasdata enables loading (or not) of 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 use of memory-optimized streaming filters.
  • readlasdata() supports .lax files 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.3.1 by Jean-Romain Roussel, 11 days ago

Report a bug at

Browse source code at

Authors: Jean-Romain Roussel [aut, cre, cph] , Florian De Boissieu [aut, ctb] (Enable the support of .lax file and extra byte attributes) , 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) , Tiago de Conto [ctb] (Implemented the -thin_with_voxel filter method)

Documentation:   PDF Manual  

GPL-3 license

Imports data.table, Rcpp, uuid, rgeos, sp, sf

Suggests testthat

Linking to Rcpp, BH

Imported by lidR.

Suggested by uavRst.

See at CRAN