ScanAngleRank
attribute. The value -128 previously triggered a false positive error (fix #54)header_update()
now populates the Number of points by return
with 0 in absence of ReturnNumber
read.las()
can read full waveform but write.las()
can't write yet. The current read mode reads raw data without interpretation. A function fwf_interpretation()
can parse the raw data into something more manageable by users. Everything is experimental and prone to modification. For example we might change our mind and read interpreted waveform instead of raw data in the future. The format of the output of fwf_interpretation()
may also change if we find that this current design is not relevant. In short the FWF support is not mature yet and we plan to provide a mature and stable API in v1.6.0.LazyData
in DESCRIPTION
Description
in DESCRIPTION
to include format 1.4 in reading capabilities.header_create()
creates a v1.4 header if the point source format is detected to be 6 or moreheader_create()
uses floor(min(X|Y|Z))
instead of min(X|Y|Z)
as offsets.header_create()
infers the scale factor from the data instead of setting hard coded value 0.01read.lasheader()
now reads the extended variable length record (EVLR)write.las()
now writes all GeoKeyDirectoryTag + GeoAsciiParamsTag + GeoDoubleParamsTagwrite.las()
can now write WKT OGC CS in EVLRtinytest
instead of testthat
header_set_epsg()
incorrectly set the epsg code when the key 3072 is missing but the VLR is not emptyis_valid_ReturnNumber()
wrongly triggered errors when checking if the ReturnNumber attribute is correct. It missed errors for LAS < 1.4 and triggered wrong errors for LAS 1.4 prf > 6. #45is_empty_point_cloud()
did not actually test what it was expected to test.is_valid_scalefactors()
does not trigger any report for very fine scale factors such as 0.000001 that is a valid scale of long/lat coordinates.is_valid_returnnumber()
does not complain for ReturnNumber = 0. This is valid but not compliant to the specs.read.las(filter = "-h")
and read.las(transform = "-h")
check_data
, check_header
and check_data_vs_header
.is_valid_ScanAngle()
triggers an error if |a| > 196.6 instead of 180. 196.6 is the maximum writable angle but is not compliant with the specs (#44).is_compliant_ScanAngle()
to check the compliance of the Scan Angle.tabulate()
instead of home made C++ code to count the return numbers..ply
files in read.las
and read.lasheader
. This is an undocumented feature not actually intended to be used. (#39).writelax()
.read.las
and read.lasheader
modifications in string encoding in R 3.5.0 generated issues with path containing special characters. Native encoding is now enforced.ScanAngleRank
above 90 degrees but not above 127 degrees.LASlib
LASlib
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.header_create()
does not generates random UUID. The UUID is set to "00000000-0000-0000-0000-000000000000"
. Dependence to uuid
has been removed.sp
, sf
and rgeos
were no longer useful. rlas
only depends on data.table + Rcpp
.write.las
is 25% fasterread.las
when using an inappropriated filter such as -keep_class 123.write.las
writes the epsg code in the header.check_data
now checks the adequation between the ReturnNumber
and the NumberOfReturns
readlasdata
and readlasheader
were definitively removed.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.readlasdata
and readlasheader
were definitively removed.Synthetic_flag
, Keypoint_flag
and Withheld_flag
.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.read.lasheader
that replaces readlasheader
, which is now deprecated. This change was made only for naming consistency.header_*
that allows the user to make valid headers and thus properly write the las files.check_*
that check data integrity.readlasdata
writelax
for writing LAX files.readlasdata
enable for reading several files.lasdatareader
is twice as fast since it reads files only oncereadlasdata()
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).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)readlasdata()
are now TRUE
readlasheader()
is now able to read the Variable Length Records
CRAN does not build binary packages. After exchanges with prof Bryan Ripley
Third submission
Second submission
First submission
boost
header still included in the code.boost
header_create()
now take into account ScannerChannel
[u]int64_t
instead of [unsigned] long long
and PRI[u|d]64
to print [u]int64_t
. This solves new warnings from gcc-8
on Windows with %lld
.sprintf
with snprintf
The ALTREP framework is now used to load compact representation of non populated attributes. For example UserData
is usually populated with zeros (not populated). Yet it takes 32 bits per point to store each 0. It now uses 644 bits no matter the number of points if it is not populated. This optimization is automatically applied to each attribute that contain a single repeated value. This enables to save approximately 30 to 40% of memory usage depending on the number of non-populated attributes.