- Fix: can read file with multiple extra bytes definitions
- change maintainer's email address
- Removed a
boost
header still included in the code.
- Internal changes to appease CRAN: remove dependency to
boost
- support of Text Area Description #64
header_create()
now take into accountScannerChannel
- Remove Rcpp.h and replace by R.h saves 2:30 min of compilation.
- support of COPC spatial indexed files
- Fix warnings with gcc-12
- C internals have been standardized to use
[u]int64_t
instead of[unsigned] long long
andPRI[u|d]64
to print[u]int64_t
. This solves new warnings fromgcc-8
on Windows with%lld
.
- Fix compilation with g++-12 thanks to Dirk Eddelbuettel #57
- Replace
sprintf
withsnprintf
- Fix -Wempty-body on CRAN request
- Fix -Wformat on CRAN request
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.
- Fix gcc-asan AddressSanitizer: global-buffer-overflow on CRAN when reading las/laz with extrabytes attributes.
- Fix warning: array subscript 32 is outside array bounds of ‘const char [2]’ [-Warray-bounds]
- Fix gcc-asan AddressSanitizer: global-buffer-overflow on CRAN when reading las/laz with extrabytes attributes.
- Fix: read of a 32 characters extra bytes description string that is not null-terminated (fix #53)
- Fix: value -128 can be read in
ScanAngleRank
attribute. The value -128 previously triggered a false positive error (fix #54) - Fix:
header_update()
now populates theNumber of points by return
with 0 in absence ofReturnNumber
- New: Full waveform support (still experimental and incomplete).
read.las()
can read full waveform butwrite.las()
can't write yet. The current read mode reads raw data without interpretation. A functionfwf_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 offwf_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. - Misc: removed
LazyData
inDESCRIPTION
- Misc: Update
Description
inDESCRIPTION
to include format 1.4 in reading capabilities. - Enhance:
header_create()
creates a v1.4 header if the point source format is detected to be 6 or more - Enhance:
header_create()
usesfloor(min(X|Y|Z))
instead ofmin(X|Y|Z)
as offsets. - Enhance:
header_create()
infers the scale factor from the data instead of setting hard coded value 0.01
- Fix: build failure with GCC 4.x
- Fix: gcc-asan signed integer overflow.
- Fix: when reading a non supported extra bytes attribute rlas used to print a warning message. It now throws a real warning.
- Fix: querying ROI using LAX files in LAS file > 2GB on Windows (see #50)
- Fix: file creation day is now written (see #51)
- New:
read.lasheader()
now reads the extended variable length record (EVLR) - New:
write.las()
now writes all GeoKeyDirectoryTag + GeoAsciiParamsTag + GeoDoubleParamsTag - New:
write.las()
can now write WKT OGC CS in EVLR - Enhance: full update of LASlib (fix #43)
- Change: use
tinytest
instead oftestthat
- Fix gcc-asan new-delete-type-mismatch error when reading las/laz with lax files that appeared with C++14 and later standard.
- Switch to C++14 to use boost 1.75.0 (see #49)
- Fix #48.
header_set_epsg()
incorrectly set the epsg code when the key 3072 is missing but the VLR is not empty
- Fix: The function
is_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. #45 - Fix: The function
is_empty_point_cloud()
did not actually test what it was expected to test. - Fix:
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. - Fix:
is_valid_returnnumber()
does not complain for ReturnNumber = 0. This is valid but not compliant to the specs. - Fix: formats 5, 7 and 10 were missing in the list of formats valid for storing RGB
- Fix: format 10 was missing in the list of formats valid for storing NIR
- Fix: more tests and fixes relative to asprs specification
- New: new parameter transform to apply streaming transformations
- New: list of filters and transformations are available via
read.las(filter = "-h")
andread.las(transform = "-h")
- Enhancement: las specification tests now check for NAs
- Change: defunc deprecated functions
check_data
,check_header
andcheck_data_vs_header
. - Fix:
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). - New: function
is_compliant_ScanAngle()
to check the compliance of the Scan Angle.
- Fix: One Definition Rule (ODR) violation in LASzip (LTO issue)
- Note: use the function
tabulate()
instead of home made C++ code to count the return numbers.
- New: unlock reading
.ply
files inread.las
andread.lasheader
. This is an undocumented feature not actually intended to be used. (#39). - New: verbose option in
writelax()
. - Fix: (#40) in
read.las
andread.lasheader
modifications in string encoding in R 3.5.0 generated issues with path containing special characters. Native encoding is now enforced.
- 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 touuid
has been removed. - Change: Dependancies to
sp
,sf
andrgeos
were no longer useful.rlas
only depends ondata.table + Rcpp
.
- 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
- 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.
- New:
write.las
writes the epsg code in the header.
- Change:
check_data
now checks the adequation between theReturnNumber
and theNumberOfReturns
- Change:
readlasdata
andreadlasheader
were definitively removed. - Fix:
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.
- Fix: several compilation warnings on CRAN
- Change:
readlasdata
andreadlasheader
were definitively removed.
- Reupload on CRAN after being removed.
- New: read the classification flags in fields
Synthetic_flag
,Keypoint_flag
andWithheld_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
- Fix: [#18] additional errors on CRAN with ASAN and USBAN
- New: enables the support of files with point data formats 6, 7 and 8 in read mode.
- New: enables the support of extra bytes attributes in write mode.
- New: function
read.las
that replacesreadlasdata
, 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 replacesreadlasheader
, 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)
- Fix: segfault when reading extrabytes
- New: support of extra bytes attributes in
readlasdata
- Fix: some internal features that cannot be used by regular users. Does not affect users.
- New: function
writelax
for writing LAX files. - New: function
readlasdata
enable for reading several files. - Fix: the las files were read twice every time.
lasdatareader
is twice as fast since it reads files only once
- Fix: compilation issue on CRAN with clang++ and gnu++11
- Fix [#4] bug of computer precision when writing files
- Fix [#61] wrong header size for files version 1.3
- Change: update LASlib and LASzip
- Change: better integration of LASlib and LASzip in R
- Fix: write the proper RGB colors instead of 0.
- Fix: [#3]
readlasdata()
is able to read file when LAS specifications are not respected. - Change:
writelas
performs tests on the header before entering C++ code (enable to fail with informative errors).
- New:
readlasdata()
gains a parameterfilter
enabling use of memory-optimized streaming filters. - New:
readlasdata()
supports .lax files for faster filter (thanks to Florian de Boissieu #2) - Change: All the default options for
readlasdata()
are nowTRUE
- Fix:
readlasheader()
is now able to read theVariable Length Records
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
Third submission
- Change: Manually list sources in makevars
- Change: Remove SystemRequirements field in DESCRIPTION
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
First submission