1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301
|
# Changelog
## Version 2.6.1 (07/07/2025)
### Fixed
- Removed invalid import that prevented users from importing laspy
## Version 2.6.0 (06/07/2025)
### Fixed
- Bump lazrs to fix a bug that could happen in append mode
(compatibility with older lazrs preserved, but without the fix)
- Bug in COPC where node with 0 points where not respected
- Fixed minimum values computed by laspy info
- The number of points by return is now correctly 64-bit and not 32-bit
- ScaledArrayView setitem/getitem whe index is in the form of [something, index]
### Added
- Add copy method to LasHeader
- When the points given to the LasWriter.write_points
are of type ScaleAwarePointRecord laspy now automatically rescale
the points.
- ExtraBytesParams have a no_data attribute to specify which value is the no_data value
- min and max of extra bytes are now 'tracked' when writing, and their respective fields in the
extra-bytes struct are populated
- laspy.open 'encoding_error' argument is also available to laspy.read
(This argument can be used to how text encoding errors should be handled)
## Version 2.5.4 (19/06/2024)
### Fixed
- Fix compatibility with numpy 2.0
- Return None as CRS if WKT string is empty
instead of having an exception from pyproj
## Version 2.5.3 (4/01/2024)
### Fixed
- Properly install laspy/cli/core.py file
- Don't install CLI tests as part of the package (tests/cli/*)
- Explicitly added 'rich' as a dependency of CLI feature
## Version 2.5.2 (2/01/2024)
### Fixed
- When trying to write more points than what is possible, now a
proper error is raised.
### Added
- `CopcReader.open` now accepts file-like objects.
- Add `filter` command to CLI
## Version 2.5.1 (28/07/2023)
### Fixed
- Fixed bug in laz backend handling in the CLI
## Version 2.5.0 (23/07/2023)
### Added
- Added optional CLI. It can be installed using the `cli` extra
(`pip install laspy[cli]`). It has `info`, `compress`, `decompress`, `convert`
and `copc query` commands.
- Added a `prefer_wkt` option to `LasHeader.parse_crs`
(true by default) to prefer (or not) WKT VLR over Geotiff VLR
in case both are present in the file.
### Fixed
- laspy.open will now properly close the opened file
if an exception is raised.
- Wavepackets's `return_point_wave_location` is now
properly returned as as float32 and not an uint32.
- `parse_crs` properly checks that ProjectedCRSGeoKey/GeodeticCRSGeoKey
is in range of EPSG code before using pyproj to parse it.
- Missing `super.__init__()` in `CopcHierarchyVlr`.
- Copc no longer include the hierarchy page twice
- A LasHeader with a custom `creation_date`/`date` will
no longer be reset to `date.today` upon writing.
---
## Version 2.4.1 (20/02/2022)
### Fixed
- Removed spurious `print` in copc.py and compression.py
## Version 2.4.0 (11/02/2022)
## Added
- `read_evlrs` option (default true) to `laspy.open`, `laspy.LasReader.__init__` and `laspy.LasHeader.read_from`
Which allows to skip reading the EVLRs when opening a file. This can be useful when
opening a LAS file from a non seekable source / where seeking is expensive as reading
EVLRs requires seeking to the end of the file.
- Selective decompression feature that allows to select in a LAS 1.4 (fmt >= 6 && <= 10)
which fields should be decompressed allowing to save time by decompressing only the fields
that are needed. Works with LAZ and COPC files.
## Changed
- The internal point reader is lazily created when the first point is actually read
## Fixed
- LasAppender when input file's last chunk is complete
- Handle redundant CSs in GeoKeyDirectoryVlr
## Version 2.3.0 (25/10/2022)
### Changed
- EVLRs are now read during the file opening part.
- EVLRs are now part of the `LasHeader` class, but are still accesible
via `LasReader.evlrs` or `LasData.evlrs.
### Fixed
- Fixed CRS parsing on fiels with both `GeoKeyDirectoryVlr` and `WktCoordinateSystemVlr` and the first one is empty
- `LasHeader.parse_crs` also looks for the CRS VLRs in the EVLRs of the file.
- Fixed `LasHeader.generating_software` and `LasHeader.system_id` being limited to 31
bytes instead of 32.
- Fixed `laspy.convert` to ensure the returng `LasData.evlrs` is a `Vlrlist` and
no simply a `list`
---
## Version 2.2.0 (29/06/2022)
### Added
- Added support for querying COPC LAZ files via a new class `CopcReader`.
- Added new optional feature to support adding CRS / SRS to a LAS file from a `pyproj.CRS` as
well as reading the CRS / SRS information from a LAS file to a `pyproj.CRS`.
### Fixed
- Fixed support for stream / source that are not `seekable`.
### Changed
- Support for Python3.6 removed.
---
## Version 2.2.0 beta 1 (14/06/2022)
### Added
- Added support for querying COPC LAZ files via a new class `CopcReader`.
### Fixed
- Fixed support for stream / source that are not `seekable`.
---
## Version 2.2.0 beta 0 (03/05/2022)
### Added
- Added new optional feature to support adding CRS / SRS to a LAS file from a `pyproj.CRS` as
well as reading the CRS / SRS information from a LAS file to a `pyproj.CRS`.
### Changed
- Support for Python3.6 removed.
---
## Version 2.1.2 (18/02/2022)
### Fixed
- Fixed `LasHeader.update` (thus fixing `LasData.update_header`) computation of x,y,z mins and maxs
- Fixed regression introduced in 2.1.0 where changing the `header.scales` and/or `header.offsets`
on a `LasData` newly created and then setting `x` `y` or `z` would produce incorrect result.
---
## Version 2.1.1 (23/01/2022)
### Fixed
- Fixed regression introduced in 2.1.0 where setting the x, y or z value would not properly set the corresponding
X, Y or Z value.
- Fixed `LasData.change_scaling` setting the header's `offsets` and/or `scales` to `None`
if the corresponding optionnal argument was not given to the `change_scaling` method.
The header will now correctly keep the corresponding value unchanged.
---
## Version 2.1.0 (09/01/2022)
### Added
- Added a better error message when reading empty files
- Added a new `xyz` attribute to `LasData` that returns x, y, z as a new numpy array or sets the x, y, z from an array
- Added `LasData.remove_extra_dim` and `LasData.remove_extra_dims` to allow the removal of extra dimensions (__only__)
### Changed
- Minimum `lazrs` version updated to 0.4.0 to bring support for LAZ with variable size chunks
(used in [COPC](https://copc.io) files). the `laszip` backend already supported variable size chunks LAZ.
- Improved assigning to multiple dimensions at once (`las[['x', 'y', 'z']] = ...`)
- `laspy` will no longer raise encoding errors when reading files for which the header's `generating_software` or
`system_identifier` as well as the vlr's `description` is not `ascii` encoded as the spec mandates.
However, an encoding error will be raised when writing such files.
- `LasData.__getitem__` will now return a `LasData` when indexing with slice or numpy array.
`assert isinstance(las[[1, 2, 3, 4]], laspy.LasData)`
### Fixed
- Fix `PackedPointRecord.__len__` when array has no dim
- Fix scaled extra byte creation when the offsets/scales given to `ExtraBytesParam` where of type `list` or `tuple`
- Fix `ScaledArrayView` to allow indexing with `list` or `numpy.array`.
---
## Version 2.0.3 (16/09/2021)
### Fixed
- Fix function that parses geotiff VLRs
- Fix handling of points with 'unregistered' extra bytes (PR #158)
- Fix to handle empty LAS/LAZ more robustly
---
## Version 2.0.2 (23/07/2021)
### Changed
- Update minimum lazrs version which allows to:
- Fix Appending in LAZ files.
- Improve memory usage when reading/writing. (issue #152)
### Fixed
- Fix `system_identifier` reading by ignoring non ascii characters instead of erroring ,(issue #148, PR #149).
- Fix `LasData.change_scaling` method.
---
## Version 2.0.1 (29/06/2021)
### Fixed
- Fix `.min` `.max` methods of array views
- Ship the tests as part of the source distribution (But they won't be installed with `pip install`)
---
## Version 2.0.0 (15/06/2021)
- Overhaul of the internals by essentially incorporating pylas into laspy,
while the API to retrieve and set dimensions stayed the same, other parts changed
and will require adaptation.
- Better LAZ support
- Added support for writing LAZ
- Changed decompression mechanism by using either `laszip` python bindings (and not laszip-cli)
or `lazrs`
- Added ability to read and write LAS/LAS in `stream` / `chunked` mode.
- Changed laspy to support the reading and writing of LAS/LAZ data from and to `file-objects` and `bytes`
- Dropped support for python2.7, python3.6+ is supported.
---
## Version 1.7.0 (13/03/2020)
- Fixed bug in point record format 5, 9 and 10 [#105](https://github.com/laspy/laspy/issues/105)
- Return explicit msg if laszip executable was not found [#110](https://github.com/laspy/laspy/issues/110)
- Supprt numpy 1.17 [#122](https://github.com/laspy/laspy/issues/122)
## Version 1.6.0 (11/10/2018)
- Bug fix [#92](https://github.com/laspy/laspy/issues/92)
- Test creation of all valid custom dimension data types
- Modify handling of extra bytes to be char data instead of numeric byte data
## Version 1.5.1 (5/12/2017)
- Bug fixes [#67](https://github.com/laspy/laspy/pull/67), [#75](https://github.com/laspy/laspy/pull/75), [b02b40900b5](https://github.com/laspy/laspy/commit/b02b40900b5620972930cd0c201b4db1a6a69754)
- Allow usage of `laszip-cli` when working with LAZ files [#77](https://github.com/laspy/laspy/pull/77)
## Version 1.5.0 (30/03/2017)
- Improved memory handling in base.FileManager [#48](https://github.com/laspy/laspy/pull/48)
- Introduced `r-` file mode, that only reads the header of as LAS file [#48](https://github.com/laspy/laspy/pull/48)
- LAS v. 1.4 bug fixes [#55](https://github.com/laspy/laspy/pull/55)
- Python 3 support [#62](https://github.com/laspy/laspy/pull/62)
|