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.4 <>.


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

rlas relies on a modified version of LASlib and LASzip that were modified to be compatible with R. The library can therefore be compiled into R without any complaints from R CMD check. It enables R users to read and write binary files commonly used to store LiDAR data. LAS version 1.0 to 1.4 are supported. Point data record format 0,1,2,3,6,7,8 are supported.

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

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:
  • For rlas code enabling Martin Isenburg's code to be wrapped into R:
    • (c) 2016-2018 Jean-Romain Roussel
    • Provided under GPL-3 license.


rlas v1.3.2 (Release date: 2019-04-26)

  • Fix: #33 it is now allowed to write ScanAngleRank above 90 degrees but not above 127 degrees.
  • Fix: #34 fix a misinterpretation of the LAS specification. Offset can be negative.
  • Fix: #35 Erreur reading a specific laz file. The actual problem is unknown. This has been fixed by updating LASlib
  • Fix: #36 Classification was zeroed when writing LAS1.4 prf 6. The actual problem is not known. This has been fixed by updating LASlib
  • Fix: ScanAngle was rounded to integer for LAS 1.4 prf >= 6 before to be written. With the 0.006 factor conversion this lead to unrelated values when reading back a written file.
  • Change: header_create() does not generates random UUID. The UUID is set to "00000000-0000-0000-0000-000000000000". Dependence to uuid has been removed.
  • Change: Dependancies to sp, sf and rgeos were no longer useful. rlas only depends on data.table + Rcpp.

rlas v1.3.1 (Release date: 2019-02-08)

  • Fix: valgrind - Conditionnal jump on uninitialized value (consequentless for users)
  • Fix: valgrind - Invalid read of size 2
  • Fix: USBAN-ASAN - heap-buffer-overflow on address

rlas v1.3.0 (Release date: 2019-02-03)

  • New: write.las is 25% faster
  • New: #27 improved support of LAS specifications including LAS 1.4.
  • New: introduction of a set of 50+ functions to test compliance with LAS specifications
  • New: introduction of a set of 5+ functions to modify a header easily repecting LAS specifications
  • Fix: #26 segfault in read.las when using an inappropriated filter such as -keep_class 123.

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.5.0 by Jean-Romain Roussel, 8 months 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 Rcpp, data.table

Suggests tinytest

Linking to Rcpp, BH

Imported by lidR.

See at CRAN