Changes of Note
(please note the release notes also include bug fixes that were in 2.9.1-2.9.3)
- Protect some filters against empty views by @hobu in #4774
readers.spzandwriters.spzare now plugins by @ibell13 in #4755- Update minimum GDAL version to GDAL 3.8 by @kasparas-k in #4859
New Stages
- Add
filters.m3c2for 3D change detection by @ibell13 in #4887 - Add
filters.radiusassignby @leavauchier in #4232
New Features and Enhancements
- Add
min_clamp,max_clamp, andnodataoptions tofilters.hag_demby @hobu in #4828 - Merge handling of
reader_argsforreaders.tindexandreaders.stacby @ibell13 in #4743 - Support
transform_beaminfilters.georeferenceby @gui2dev in #4894 pdal tindex: read input from a list of files by @ibell13 in #4919- Created
PointGridquadtree index, added tofilters.m3c2by @ibell13 in #4918 - Add radius distance search to
filters.relaxationdartthrowingfilter by @ibell13 in #4903 - allow user to write
pdal_metadatawithwriters.copcby @hobu in #4898 readers.rxpAdd UnambiguousRange and ShotTimestamp dimensions, export empty shots by @gui2dev in #4893- Update libE57Format to v3.3.0 by @petercwq in #4884
- Find neighbors in
filters.normalwith radius, move processing by @ibell13 in #4882 - Add custom class arguments for ground classification filters by @kasparas-k in #4867
- Add support for retrieving distances in radius search. by @abellgithub in #4878
writers.gdal: add percentile calculation by @ibell13 in #4839- Add class argument for hag_delaunay, hag_dem and hag_nn filters by @kasparas-k in #4861
Behavior and Policy Updates
- Support 0 as variable chunk indicator by @abellgithub in #4840
- Suppress error messages from GDAL/PROJ when infering metadata type SRSs by @hobu in #4820
- consolidate dumpSummary of QuickInfo into a method by @hobu in #4758
- Change
filters.georeferenceto output ECEFEPSG:4978by @gui2dev in #4902 - Emit warnings for
pdal tindexhexbin boundary failures by @ibell13 in #4831
Bug Fixes
- Treat raster cells very close to a triangle edge as on the edge for
filters.facerasterby @abellgithub in #4756 - Use namespace-qualified name for spz library. by @abellgithub in #4783
- Second update ArrowReader.cpp for Arrow 21+ by @amoeba in #4777
- Serialize JSON MetadataNode objects to pipelines as JSON (fixes
FileSpec,OGRSpecanduser_datanode serialization) by @ibell13 in #4752 readers.ept: terminate threads properly for tile errors by @ibell13 in #4798- Fix reading of non-XYZ from binary PCD. by @abellgithub in #4937
- Remove attempted support for clipping invalid bounds. by @abellgithub in #4939
readers.ept: reject tiles with bad hierarchy point counts by @ibell13 in #4941- Fix parsing of expressions containing parentheses by @abellgithub in #4921
- Catch some garbage file information in LAS files by @abellgithub in #4915
- Restore point order to previous implementation in
filters.hexbinby @abellgithub in #4901 - Only specify JSON-compatible types when serializing pipelines by @ibell13 in #4841
- Fix Connector segfault on 404 from /vsis3/ path by @craigds in #4852
- Suppress error messages from GDAL/PROJ when infering metadata type SRSs by @abellgithub in #4819
- pdal::StageWrapper::run needs to execute for empty readers by @hobu in #4807
Compilation and Build
- Alias PDAL_DLL => PDAL_EXPORT and warn users to upgrade if it is defined by @hobu in #4811
- Update CMakeLists.txt by @houyongkuo in #4766
- fix build issue on gentoo by @t0b3 in #4747
- CMake modules cleanup by @hobu in #4749
- Fix build without googletest when WITH_TESTS=OFF by @aleixpol in #4753
- Update ArrowWriter.cpp to work with Arrow 21.0.0 by @amoeba in #4773
- Fix multi-line comment warning by @dg0yt in #4744
- Fix sorting on Windows. by @abellgithub in #4788
- Back to vendor'd gtest by @abellgithub in #4801
- Make sure to Flush() in VSIStreamBuffer::sync() by @hobu in #4806
- Build: remove use of GDAL_INCLUDE_DIR by @rouault in #4905
- GDAL 3.13 changed return of
GetMetadatato return a CSLConstList by @jef-n in #4929 writers.gdal: fix allow_empty option by @ibell13 in #4928- Allow alternate shared library output name with
PDALCPP_LIB_OUTPUT_NAMECMake variable by @jef-n in #4932 readers.copc&readers.ept: reset members inready()by @ibell13 in #4913- Eliminate need for external linkage of GDAL-typed API function by @abellgithub in #4888
- Isolate COPC remote reader test by @abellgithub in #4892
- use GDAL CMake CONFIG for finding/configuring the library by @hobu in #4881
- Remove dead code from Kazhdan's ply.h by @abellgithub in #4857
Packaging
- Create ARM64 PDAL docker image by @j9ac9k in #4810
- expand the Conda install invocations to show different configurations by @hobu in #4916
Documentation
- fix typos and missing inputs in some filter docs by @trns1997 in #4770
- Fix #4733 to correct docs of writers.pcd by @hobu in #4794
- Fix small type by @vpicavet in #4799
- Correct note block formatting in readers.ept.md by @isagint in #4910
- Fix syntax in
filters.assigndoc by @connormanning in #4908 - Clarify licensing of GridDecimationFilter and add tests by @hobu in #4880
- Complete migration to pdal.org by @hobu in #4873
- Update download.md by @danlessa in #4850
- Update default value for dataformat_id in docs by @pierotofy in #4845
New Contributors
- @aleixpol made their first contribution in #4753
- @amoeba made their first contribution in #4773
- @houyongkuo made their first contribution in #4766
- @vpicavet made their first contribution in #4799
- @danlessa made their first contribution in #4850
- @petercwq made their first contribution in #4884
- @isagint made their first contribution in #4910