________________________________________________________________________________

 RDB 2 SDK Version History
________________________________________________________________________________

 2025-09-10: Version 2.5.6
	- New point attribute: "riegl.obs_confidence_xyz" (#5864)
	- New meta data item: "riegl.gnss_processing_info" (#5777)
	- New meta data item: "riegl.riloc_processing_info" (#5777)
	- Improved error handling for more stability (#5866)
	- New Python example script for cloning databases

 2025-05-02: Version 2.5.5
	- New point attribute: "riegl.pof_course" (#5595)
	- New point attribute: "riegl.pof_undulation" (#5595)
	- New point attribute: "riegl.pof_xyz_ned_velocity" (#5595)
	- New point attribute: "riegl.pof_velocity_ned" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_north" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_east" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_down" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_north_east" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_east_down" (#5595)
	- New point attribute: "riegl.pof_velocity_accuracy_down_north" (#5595)
	- New point attribute: "riegl.dmi_count" (#5571)
	- New point attribute: "riegl.dmi_path_length_raw" (#5571)
	- New point attribute: "riegl.dmi_scale" (#5595)
	- New meta data item: "riegl.dmi_config" (#5571)
	- Updated point attribute "riegl.pof_xyz_velocity" (#5595)
	- Updated point attribute "riegl.pof_xyz_lvcs_velocity" (#5595)
	- Improved cache handling of point attribute data (#5657)
	- Python API: Fix Pointcloud.create_by_schema() and extend rdb_create() (#5626)

 2025-03-14: Version 2.5.4
	- Fix memory consumption of "single-pass insert mode" for small cache sizes (#5548)
	- Improve error handling of "multi-pass insert mode" (#5553)
	- Add function to load settings for "multi-pass insert mode" (#5556)

 2025-02-04: Version 2.5.3
	- Fix bug in "multi-pass insert mode" that caused incomplete LOD data (#5498)
	- rdbadmin: Improved filtering of the point index tree

 2025-01-30: Version 2.5.2
	- Fix bug in "multi-pass insert mode" with input point buffers larger than 2 GB (#5485)
	- C++ API: Fix multi-threaded access of point attributes (#5472)
	- API: Include API version string in transaction details (#5474)
	- rdbadmin: Center modal dialog windows

 2025-01-16: Version 2.5.1
	- Fix bug in "multi-pass insert mode" that caused database corruption on subsequent point inserts (#5461)

 2024-12-12: Version 2.5.0
	- New optional "multi-pass insert mode" for improved point cloud creation performance (#5339)
	- Improve performance of select query when all points are excluded by the filter string (#5349)
	- New point attribute: "riegl.mta_uncertain_point_vol" (#5357)
	- New point attribute: "riegl.mta_uncertain_point_vol_diff" (#5357)
	- New point attribute: "riegl.pof_roll_velocity" (#5342)
	- New point attribute: "riegl.pof_pitch_velocity" (#5342)
	- New point attribute: "riegl.accelerometer_bias" (#5385)
	- New point attribute: "riegl.accelerometer_scale" (#5385)
	- New point attribute: "riegl.gyroscope_bias" (#5385)
	- New point attribute: "riegl.gyroscope_scale" (#5385)
	- Updated point attribute: "riegl.pof_xyz_velocity" (#5342)
	- Updated point attribute: "riegl.pof_yaw_velocity" (#5342)
	- rdbadmin: Fix filter string examples

 2024-10-16: Version 2.4.5
	- Fix upgrade of point attribute property "invalid value" (#5334)
	- Update point attribute titles to use "Title Case" style (#5335)

 2024-10-15: Version 2.4.4
	- Improve performance of insert query (#5105)
	- Fix race condition in file opening phase (#5314)
	- Fix wrong attribute minimum/maximum/revision after removing points (#5163)
	- Fix LOD point attribute update after removing points and updating attributes (#5204)
	- Ignore invalid points IDs in "riegl.id == ..." filter strings (#5209)
	- Block restoring of transactions while queries are active (#5169)
	- Fix merging of unknown point attributes (#4982)
	- Context and Pointcloud creation error handling improved (#5010)
	- LOD for 2D pixel data: improve handling of large datasets (#5317)
	- New point attribute: "riegl.xyz_lvcs" (#4929)
	- New point attribute: "riegl.pof_accuracy_north_east" (#5076)
	- New point attribute: "riegl.pof_accuracy_east_down" (#5076)
	- New point attribute: "riegl.pof_accuracy_down_north" (#5076)
	- New point attribute: "riegl.pof_xyz_velocity" (#5333)
	- New point attribute: "riegl.pof_xyz_lvcs_velocity" (#5333)
	- New point attribute: "riegl.pof_yaw_velocity" (#5333)
	- New point attribute: "riegl.tpu_wsm_z_uncertainty" (#5114)
	- New point attribute: "riegl.tpu_wsm_normal_uncertainty" (#5114)
	- New point attribute: "riegl.tpu_xyz_uncertainties" (#5114)
	- New point attribute: "riegl.tpu_thu" (#5114)
	- New point attribute: "riegl.tpu_tvu" (#5114)
	- New point attribute: "riegl.xyz_map_min" (#5117)
	- New point attribute: "riegl.xyz_map_max" (#5117)
	- New point attribute: "riegl.cp_surface_northing_angle" (#5327)
	- New point attribute: "riegl.cp_surface_northing_tolerance_angle" (#5327)
	- New meta data item: "riegl.dyntrig" (#5310)
	- Updated point attribute "riegl.pof_accuracy_north" (#5076)
	- Updated point attribute "riegl.pof_accuracy_east" (#5076)
	- Updated point attribute "riegl.pof_accuracy_down" (#5076)
	- Updated point attribute "riegl.amplitude" (#4870)
	- Updated point attribute "riegl.reflectance" (#4870)
	- Updated point attribute "riegl.background_radiation_si" (#4873)
	- Updated point attribute "riegl.background_radiation_ingaas" (#4873)
	- API: Update documentation about thread-safety (#4999)
	- API: Update documentation about select query filter strings (#5171)
	- Python API: Update documentation and example of rdb_to_pandas() (#4897)
	- Python API: Update README.TXT to include note about "pip3" vs. "pip"
	- Python API: Fix documentation of Pointcloud.select() (#5077)
	- rdbadmin: Support selecting data from multiple nodes (#5240)

 2023-11-30: Version 2.4.3
	- New point attribute: "riegl.svb_reflectance_volumetric" (#4819)
	- New point attribute: "riegl.svb_reflectance_bottom_uncorrected" (#4819)
	- New point attribute: "riegl.svb_attenuation_volumetric" (#4819)
	- New point attribute: "riegl.svb_target_attenuation_coefficient_volumetric" (#4819)
	- Updated point attribute "riegl.accelerometer" (#4689)
	- Updated point attribute "riegl.gyroscope" (#4689)
	- Update string size limit for list of named point attribute values (#4790)
	- Fix point filter modulo ("%") operator evaluation (#4863)
	- rdbadmin: add suggested definitions for direction vector attributes (#4667)
	- rdbadmin: import multiple meta data items from JSON file (#4457)
	- rdbadmin: fixed bug when renaming point attributes (#4839)
	- Windows: fix duplicated file signature of rdblib.dll (#4706)
	- Update C++ example "rdb-example-03-select-points.cpp"

 2023-06-09: Version 2.4.2
	- New point attribute: "riegl.event_timestamp" (#4449)
	- New point attribute: "riegl.event_index" (#4449)
	- New point attribute: "riegl.event_pulse_width" (#4449)
	- New point attribute: "riegl.event_fake_pulse" (#4449)
	- New point attribute: "riegl.point_vector" (#4642)
	- New point attribute: "riegl.pca_diameter" (#4642)
	- New point attribute: "riegl.angle_of_incidence" (#4642)
	- New point attribute: "riegl.eigenvalue_norm_min" (#4642)
	- New point attribute: "riegl.eigenvalue_norm_max" (#4642)
	- New point attribute: "riegl.cylinder_axis_direction" (#4648)
	- New point attribute: "riegl.cylinder_radius" (#4648)
	- New point attribute: "riegl.cylinder_height" (#4648)
	- New point attribute: "riegl.cylinder_origin_confidence" (#4648)
	- New point attribute: "riegl.cylinder_radius_confidence" (#4648)
	- New point attribute: "riegl.cylinder_direction_confidence" (#4648)
	- New point attribute: "riegl.cylinder_inlier_count" (#4648)
	- New point attribute: "riegl.cylinder_outlier_count" (#4648)
	- New point attribute: "riegl.point_inside_aabb_bocs" (#4653)
	- New point attribute: "riegl.point_outside_aabb_bocs" (#4653)
	- New point attribute: "riegl.nbhd_distance_min" (#4673)
	- New point attribute: "riegl.nbhd_distance_max" (#4673)
	- New point attribute: "riegl.nbhd_distance_mean" (#4673)
	- New point attribute: "riegl.nbhd_distance_median" (#4673)
	- New point attribute: "riegl.nbhd_distance_std" (#4673)
	- New point attribute: "riegl.nbhd_distance_mad" (#4673)
	- New meta data item: "riegl.ttip_configuration" (#4449)
	- Updated point attribute "riegl.accelerometer" (#4523)
	- Updated point attribute "riegl.gyroscope" (#4523)
	- Updated point attribute "riegl.magnetic_field_sensor" (#4603)
	- Updated point attribute "riegl.distance_to_surface" (#4612)
	- Updated meta data item "riegl.stored_filters" (example, #4653)
	- Update resolutions of direction vector attributes (#4669)
	- Add new tag "timestamp" for attributes representing the timestamp of an event (#4433)
	- Normalization of unit vector attributes in insert, update and fill queries (#4623)
	- Reduce memory consumption during LOD update (#4498)
	- rdbadmin: export selected meta data items to JSON file (#4457)
	- Point attribute definition merging: improve library version comparison
	- C++ API: Improve reading of point attribute name lists (#4569)
	- Python API: add function to read points into a Pandas DataFrame (#3751)
	- Python API: add support for Python 3.11 (#4440)

 2022-11-22: Version 2.4.1
	- New point attribute: "riegl.cp_search_radius" (#4236)
	- New point attribute: "riegl.cp_maximum_distance" (#4236)
	- New point attribute: "riegl.dyntrig_uncertain_point" (#4217)
	- New point attribute: "riegl.segment_id" (#4307)
	- New point attribute: "riegl.pof_age_of_corrections" (#4412)
	- New point attribute: "riegl.pof_baseline_length" (#4412)
	- New point attribute: "riegl.pof_solution_gnss" (#4412)
	- New meta data item: "riegl.system_description" (#4368)
	- Point attribute renamed from "riegl.mta_unresolved" to "riegl.mta_uncertain_point" (#4335)
	- Updated point attribute "riegl.rgba" (description)
	- Fix typos in schema of "riegl.georeferencing_parameters"
	- Fix typos in titles of point attributes and meta data items
	- Add new point filter modulo ("%") operator (#4345)
	- Add overwrite protection for files used by other client applications (#4347)
	- Add API to get the names of all attributes used by a point filter string (#4349)
	- Fix meta data signature handling for "riegl.point_attribute_groups" (#4270)
	- Fix LOD update issues that occurred when changing the primary point attribute (#4281)
	- Fix LOD update issues that occurred when changing dynamic point attributes (#4341)
	- Fix point filter string parsing errors with leading/trailing spaces (#4350)
	- Select query: reduce memory usage when the point filter string rejects most of the points (#2273)
	- Silently ignore invalid stored filters (#4275)
	- rdbinfo: improve meta data, point attribute and primary index output (#4247)
	- rdbinfo+rdbadmin: improve cleaning of meta data strings (#4318)
	- rdbadmin: remember recently used point filter strings
	- rdbadmin: list of point attributes on the "Point data" page is resizable
	- rdbadmin: add hint about (stored) filters and the point index
	- rdbadmin: fix crash on Windows when third-party accessibility tools were active (#4432)
	- Fix API documentation for constructor and destructor of the "Pointcloud" class
	- Update Python examples: usage of point attribute names, Pylint warnings reduced
	- Version history: add notes about database file format versions (#4361)

 2022-04-21: Version 2.4.0
	- Add optional point attribute tags (#4128)
	- Add optional list of named point attribute values (#4128)
	- Improved point filter evaluation performance (#4170)
	- New point attribute: "riegl.target_type" (#4188)
	- New point attribute: "riegl.shot_biaxial_shift" (#4195)
	- New meta data item: "riegl.devices" (#4162)
	- New meta data item: "riegl.stored_filters" (#4164)
	- rdbadmin: fix "Cancel" button in the transaction settings dialog (#4160)
	- New database file format version: 1.6

	NOTE: files CREATED or MODIFIED with this version can NOT be opened with older versions!

 2021-12-13: Version 2.3.8
	- New LOD algorithm for 3D point clouds with greatly improved performance (#3813)
	- New point attribute: "riegl.nir" (#4042)
	- New point attributes: "riegl.obs_confidence_range/_theta/_phi" (#4075)
	- Meta data item "riegl.record_names" renamed to "riegl.item_names" (#4034)
	- Transactions API: new function to delete individual transactions (#3843)
	- Transactions API: new function to estimate transaction data size (#3837)
	- Log file contains reason for failed database transaction lock check (#3844)
	- rdbadmin: database inspection tool additionally shows meta data entries (#3764)
	- C++ API: use basic types like "uint32_t" and "size_t" from "std" namespace (#4035)
	- Pascal API: constants for default point attributes are now typed constants
	- Python API: add support for Python 3.10
	- macOS: minimum macOS and SDK version in LC_VERSION_MIN_MACOSX is 10.9 (#4064)
	- Fix typos in example "rdb-example-02-insert-points.py" (#4043)

 2021-10-14: Version 2.3.7
	- Improved performance of inserting points into large point clouds (#3913)
	- Improved performance of transaction commit after fill/invert queries (#3893)
	- Fix decoding of floating point values close to attribute limits (#4020)
	- rdbadmin: tooltips for descriptions of RIEGL default meta data items (#4021)
	- Windows: new setup program (.exe) in addition to the regular ZIP package (#4025)
	- Updated meta data item "riegl.waveform_info" (schema and example, #4016)

 2021-09-20: Version 2.3.6
	- New point attribute: "riegl.dynamic_object_point" (#3979)
	- New point attribute: "riegl.single_source_point" (#3975)
	- New point attribute: "riegl.mirror_object_point" (#3978)
	- New point attribute: "riegl.plane_cluster_id" (#3997)
	- New point attributes: "riegl.extinction" and "riegl.svb_*" (#3935, #3945)
	- C++ API: add comparison operator and hash function for GraphNode class (#3922)
	- C++ API: CMake: Mark include directories as SYSTEM includes (#3991)

 2021-06-30: Version 2.3.5
	- C API: use lowercase "windows.h" in "riegl/rdb/library.c" (#3886)
	- C++ API: class Pointcloud is default constructible now (context is optional, #3887)
	- Fix slow creation of Context objects that occurred on some Windows PCs (#3712)
	- Check total size of transaction title, agent, comments and settings (#3905)
	- Check size of attribute name, title, description, and unit strings (#3905)
	- Updated point attributes "riegl.pca_axis_min" and "riegl.pca_axis_max" (description, #3930)

 2021-05-04: Version 2.3.4
	- Reduced memory consumption on first commit after reopening a newly created file (#3864)
	- Updated meta data item "riegl.voxel_info" (schema and example, #3854, #3866)
	- New point attribute: "riegl.obs_confidence_xy" (#3861)
	- New point attribute: "riegl.obs_confidence_z" (#3861)
	- New point attribute: "riegl.obs_signal_confidence_rot" (#3861)

 2021-03-03: Version 2.3.3
	- The error details of "Point attribute already exists" include the attribute name (#2021020110000061)
	- Reduce memory footprint of primary index tree (mainly for 32-bit applications, #2020122910000055)
	- New point attribute: "riegl.plane_slope_class" (rdbplanes/#7)
	- New point attribute: "riegl.shot_direction_levelled" (#3820)
	- New point attribute: "riegl.source_cloud_count" (#3810)
	- New meta data item: "riegl.plane_slope_class_info" (rdbplanes/#7)
	- New meta data item: "riegl.waveform_averaging_settings" (#3821)
	- Updated point attribute "riegl.mirror_facet" (changed storage from "constant" to "variable")
	- Updated meta data item "riegl.device_output_limits" (schema, #3811)
	- Updated meta data item "riegl.exponential_decomposition" (schema, #3822)

 2020-12-08: Version 2.3.2
	- Support modification of point attribute name, title, description and unit (#3750)
	- Python API: add support for Python 3.9 (#3725)
	- rdbadmin: add action to open new window/instance (#3726)
	- rdbadmin: sort point attribute table by any column (#3743)
	- rdbadmin: fix number of decimal places in the "Range Query" tool for the "Center + Radius" mode (#3738)
	- New point attribute: "riegl.point_count_grid_cell" (#3720)
	- New point attribute: "riegl.scan_line_index" (#3759)
	- New point attribute: "riegl.shot_index_line" (#3759)
	- New meta data item: "riegl.exponential_decomposition" (#3709)
	- Updated point attribute "riegl.pof_xyz" (table index, #3760)
	- Updated point attributes "riegl.pof_accuracy_*" (resolution, #3761)
	- Updated meta data item "riegl.georeferencing_parameters" updated (schema, #3746)
	- Updated meta data item "riegl.notch_filter" (schema, #3744)
	- Updated meta data item "riegl.pulse_position_modulation" (schema, #3710)
	- Updated meta data item "riegl.receiver_internals" (schema and example, #3709)
	- Updated meta data item "riegl.voxel_info" (schema, #3707)
	- Updated meta data item "riegl.window_echo_correction" (schema, #3711)

 2020-10-23: Version 2.3.1
	- New point attribute: "riegl.window_echo_impact_corrected"

 2020-10-02: Version 2.3.0
	- New download site: https://repository.riegl.com/software/libraries/rdblib/
	- Write access to points, attributes and metadata unlocked for all users (#3078)
	- Meta data API: new functions to create and verify digital signatures (#3570)
	- Changelog API: new API to query and extend the database change report (#3614)
	- Update software license text of RDB library, tools and API files (#3570)
	- Stat query: minimum and maximum were wrong after all points of a leaf were deleted (#3675)
	- Database transaction file locking did not work correctly on Linux (#3621)
	- C/C++ API: support explicit run-time library linking (#3358)
	- C++ API: function Management::validate() is const (#3579)
	- C++ API: add query buffer pointer binding function overloads (#3604)
	- Python API: performance tuning of classes AttributeBuffer and PointBuffer
	- Python API: fix implementation of MetaData.validate()
	- Python API: fix definition of RDB_NO_INVALID_VALUE for old Python versions
	- Python API: fix metadata (tags) and naming of the python wheel package
	- Python API: fix occasional exceptions on Python interpreter shutdown
	- New Python example script for accessing and manipulating meta data
	- rdbadmin: fix bug in attribute value histogram generation (#3601)
	- New meta data item: "riegl.control_object_catalog"
	- New meta data item: "riegl.control_object_reference_file"
	- New meta data item: "riegl.device_geometry_passive_channel"
	- New meta data item: "riegl.georeferencing_parameters"
	- New meta data item: "riegl.record_names"
	- New meta data item: "riegl.reflectance_correction"
	- New meta data item: "riegl.temperature_calculation"
	- New meta data item: "riegl.vertex_info"
	- Updated meta data item "riegl.georeferencing_parameters" (schema and example)
	- Updated meta data item "riegl.trajectory_info" (schema)
	- Updated meta data item "riegl.waveform_info" (schema and example, #3597)
	- New point attribute: "riegl.acquisition_date"
	- New point attribute: "riegl.background_radiation_ingaas"
	- New point attribute: "riegl.background_radiation_si"
	- New point attribute: "riegl.control_object_type"
	- New point attribute: "riegl.cp_surface_inclination_angle"
	- New point attribute: "riegl.cp_surface_inclination_tolerance_angle"
	- New point attribute: "riegl.line_angle_reduced"
	- New point attribute: "riegl.model_cs_axis_x"
	- New point attribute: "riegl.model_cs_axis_y"
	- New point attribute: "riegl.model_cs_axis_z"
	- New point attribute: "riegl.model_fit_quality"
	- New point attribute: "riegl.pof_*_ned"
	- New point attribute: "riegl.pof_xyz"
	- New point attribute: "riegl.reference_object_id"
	- New point attribute: "riegl.scanner_position"
	- New point attribute: "riegl.temperature_estimated_ingaas_si"
	- New point attribute: "riegl.temperature_estimated_ingaas"
	- New point attribute: "riegl.temperature_estimated_si"
	- New point attribute: "riegl.used_for_adjustment"
	- New point attribute: "riegl.vertex_count"
	- New point attribute: "riegl.vertex_first"
	- New point attribute: "riegl.xyz_accuracies"
	- New point attribute: "riegl.zenith_vector"
	- Updated point attribute: "riegl.background_radiation"
	- Zstandard library updated to version 1.4.5 (#3679)
	- New database file format version: 1.5

	NOTE: files CREATED or MODIFIED with this version can NOT be opened with older versions!

 2020-02-28: Version 2.2.3
	- Extended validation of point attribute definitions (#3504)
	- Reduce memory consumption during LOD generation and update (#3517)
	- LOD for 2D pixel data: fix direction of combined surface normals (#3523)
	- Stat query: functions minimum(), maximum() and revision() support empty files (#3566)
	- Pointcloud class provides new function to check if a file contains no points (#3566)
	- Handling of large meta data items improved (#3560)
	- All APIs: new constants/functions to query the interface version (#3483)
	- C++ API: new bindMember() template for easy object member binding (#3497)
	- C++ API: new bindId() method in class QueryInsert for binding "riegl.id" buffers (#3576)
	- C++ API: classes Error, OpenSettings, CreateSettings and PointAttribute are context-free now (#3544)
	- Python API: add missing module import in management module (#3502)
	- Python API: enumerations are now based on enum.IntEnum (#3547)
	- Python API: field primary_attribute of class CreateSettings accepts strings (#3503)
	- Python API: update examples on inserting points with NumPy and how to write meta data
	- rdbadmin: fix bug in attribute value histogram generation (#3512)
	- Documentation: fix rendering of JSON schema files for meta data items
	- Meta data item "riegl.geo_tag" extended by optional "name" field
	- Meta data item "riegl.device" extended by optional "device_name" and "channel_text" fields
	- New meta data item: "riegl.detection_probability"
	- New meta data item: "riegl.licenses"
	- New meta data item: "riegl.plane_patch_matching"
	- Point attribute "riegl.mta_unresolved" updated (title, description)
	- New point attribute: "riegl.match_count"
	- New point attribute: "riegl.plane_cog_link"
	- New point attribute: "riegl.plane_confidence_normal"
	- New point attribute: "riegl.plane_occupancy"
	- New point attribute: "riegl.plane_patch_lateral_distance"
	- New point attribute: "riegl.plane_patch_link_vector"
	- New point attribute: "riegl.raw_frame_angle"
	- New point attribute: "riegl.raw_line_angle"

 2019-11-26: Version 2.2.2
	- Definition of meta data items "riegl.window_analysis", "riegl.angular_notch_filter" and "riegl.noise_estimates" added
	- Definition of meta data item "riegl.waveform_info" updated
	- Insert query: optionally optimize point IDs for smaller file size (#3458)
	- Select query: optimize filter evaluation for expressions like "riegl.id == X" (#3455)
	- Update query: fixed bug in LOD update that occurred when the primary point attribute was updated (#3423)
	- Update query: when the primary point attribute is updated, buffers for all dimensions must be given (#3420)
	- Stat query: optionally return attribute extents that have been cleaned from invalid values (#3071)
	- Fixed bug in handling of dynamic point attributes that caused long delays in some queries (#3401)
	- Fixed bug in handling of large integer constants in filter strings used by QuerySelect (#3445)
	- Python API: the Windows MSI package is no longer available; use PIP instead (#3425)
	- Python API: fixed bug in function to query transaction list that occurred in 64 bit environments (#3441)
	- rdbadmin: ignore leading and trailing whitespace when pasting text from the clipboard (#3446)
	- rdbadmin: allow multi-selection and multi-removal of point attributes (#3382)

 2019-07-11: Version 2.2.1
	- Definition of point attribute "riegl.hydro_wsm_uncertainty" added
	- Definition of point attribute "riegl.pof_satellites_qzss" added (#3378)
	- Definition of point attributes "riegl.plane_patch_distance" and "riegl.plane_patch_angular_distance" added
	- C++ API: fix compiler warnings and use "nullptr" instead of "0" (#3357)
	- C++ API: fix wrapper for PointAttribute class (#3366)
	- Python API: make the AttributesBuffer class compatible with the latest version of Python and NumPy (#3362)
	- Context: create no log file if log level is "NONE"
	- Meta data item name validation added

 2019-04-30: Version 2.2.0
	- New optional level of detail algorithm optimized for 2D pixel data (#3287)
	- Default point attributes have been rearranged and divided into groups (#3342)
	- Definition of meta data item "riegl.point_attribute_groups" added (#3342)
	- Definition of meta data item "riegl.waveform_settings" added
	- Definition of meta data items "riegl.time_base", "riegl.scan_pattern", "riegl.device_geometry" and "riegl.receiver_internals" updated
	- Definition of point attributes "riegl.xyz_socs" and "riegl.direction_medium" added
	- Definition of point attributes "riegl.xy_map" and "riegl.xyz_map" added
	- Definition of point attributes "riegl.pixel_linear_sums" and "riegl.pixel_square_sums" added
	- Definition of point attributes "riegl.voxel_index", "riegl.voxel_linear_sums" and "riegl.voxel_square_sums" added
	- Definition of point attributes "riegl.hydro_refraction_corrected", "riegl.hydro_intersection_point" and "riegl.hydro_intersection_normal" added
	- Definition of point attribute "riegl.scan_angle" updated
	- Definition of point attribute "riegl.plane_spread" removed
	- QueryInsert: check total number of points if primary attribute is "riegl.id" (#3215)
	- QueryInsert: chunk size can now be defined as absolute size based on resolution of primary point attribute (#3287)
	- QuerySelect: returned point count was wrong if multiple nodes were given and no buffers were defined (#3313)
	- QuerySelect: limit length of filter strings to avoid fatal crashes during string parsing (#3315)
	- Fixed an internal exception that occurred when reading metadata for the first time
	- Python API: database check, open and create functions explicitly convert 'location' to a string (e.g. to support instances of pathlib.Path)
	- C++ API: improved derivation of data types for bindBuffer() functions of data queries
	- C++ API: class "Pointcloud" no longer holds a private reference to an object of class "Context" (#3334)
	- C++ and Pascal API: make wrappers for PointAttribute, OpenSettings and CreateSettings classes forward compatible (#3334)
	- rdbadmin: fix bug in attribute value histogram generation that caused an endless loop
	- rdbadmin: new feature "database export"
	- rdbadmin: node details view on page "Point Index" improved
	- rdbadmin: load/save database creation settings from/to JSON file
	- Compression level 0 did not completely disable data compression
	- Error handling in function PointAttribute::decodeDescriptor() improved
	- Strip not required symbols from the macOS build of the RDB library (#3354)
	- Zstandard library updated to version 1.4.0
	- Boost libraries updated to version 1.70.0
	- New database file format version: 1.4

	NOTE: files CREATED or MODIFIED with this version can NOT be opened with older versions!

 2018-10-12: Version 2.1.7
	- Definition of meta data items "riegl.time_base" and "riegl.voxel_info" updated
	- Definition of meta data items "riegl.pixel_info", "riegl.shot_info" and "riegl.echo_info" added
	- Definition of meta data items "riegl.pose_sensors", "riegl.pose_estimation" and "riegl.pointcloud_info" added
	- JSON schema files for meta data items use "integer" instead of "number" where applicable
	- Definition of point attribute "riegl.timestamp" fixed (#2588)
	- Definition of point attributes for voxel and pixel datasets added
	- Definition of point attributes for waveform and echo datasets added
	- Definition of point attributes for position and orientation raw data files added
	- Fixed bug in database open function that caused an exception when the database was locked by an other instance (#3131)
	- Fixed bug in QuerySelect that caused a crash (segmentation fault) when next() was called with a large (>500 million) point count (#3147)
	- New function to check if database corresponds to a database schema (experimental, #3109)
	- C++ and Pascal API: All Query* classes extended by function "bindBuffer()" to simplify data buffer binding
	- C++ examples updated to show new API features
	- C++ API: fix order of included headers in "riegl/rdb/pointcloud.hpp" (#3180)
	- Data type of the point attribute vector length changed from uint8 to uint32 (#3117)
	- Improved insertion/sorting of points that have the same primary attribute value
	- rdbadmin: menu to show/hide/sort point attribute columns added (#3097)
	- rdbadmin: new dialog window to assist with point attribute definition (#3183)
	- rdbadmin: fix sorting of transaction table and point data table (#3190)
	- rdbadmin: database inspection tool additionally shows relative point attribute size
	- rdbadmin: new option to open a database from a file name copied to the clipboard
	- rdbadmin: new option to open last used database
	- Added CMake file for C++ API examples
	- CMake file revised for macOS

	BREAKING API CHANGE: The supplementary interface files for RIEGL default point attributes and metadata entries have been moved and renamed. Details see file "/manual/riegl_rdb_default.txt".

	CRITICAL API CHANGE: Since the data type of the point attribute vector length has changed from uint8 to uint32, you may need to adapt your code to be prepared for long vector attributes.

 2018-04-05: Version 2.1.6
	- New point attribute property "invalid value" added (#3047)
	- Attribute properties "minimum/maximum/default/invalid value" can be used as constants in filter expressions (e.g. "riegl.target_count != riegl.target_count:invalid")
	- Fixed bug in QueryUpdate that caused incorrect point attribute value extents in some cases (#3042)
	- QueryInsert optimized for the case that the primary point attribute is "riegl.id" (#3009)
	- QueryUpdate: improved update of LOD point copies (#3042)
	- Definition of meta data item "riegl.notch_filter" added
	- Definition of meta data item "riegl.window_echo_correction" added
	- Definition of meta data item "riegl.pulse_position_modulation" added
	- Definition of point attribute "riegl.temperature" modified
	- Definition of point attribute "riegl.timestamp" fixed (#2588)
	- Definition of point attributes "riegl.target_index" and "riegl.target_count" fixed
	- rdbadmin: new menu action to quit rdbadmin (CTRL+Q)
	- rdbadmin: truncate large meta data values in overview table (#3054)
	- Improved stability in case of lack of space in the file system (#3050)
	- Fixed possible race condition in library context creation
	- Fixed log file output when using multiple threads (#3055)

 2018-01-25: Version 2.1.5
	- Fixed bug in QueryUpdate that caused incorrect point attribute minimum/maximum values in some cases (#2983)
	- Definition of point attribute "riegl.fwa" updated
	- Definition of point attribute "riegl.direction_coarse" added
	- Definition of meta data item "riegl.beam_geometry" added
	- Definition of meta data item "riegl.reflectance_calculation" added
	- Definition of meta data item "riegl.near_range_correction" added
	- Definition of meta data item "riegl.device_geometry" added
	- rdbadmin: new buttons to copy database file path to clipboard and to locate file on disk (open file browser)
	- rdbadmin: jump to page "Point Data" with "CTRL+F", query points with "F3"
	- rdbadmin: show detected meta data value format (JSON or text)
	- rdbadmin: optionally show meta data values raw or formatted (JSON)
	- rdbadmin: optionally show transaction settings raw or formatted (JSON)
	- rdbadmin: count points that match the filter expression (new button on "Point Data" tab)
	- rdbadmin: truncate index tree view if index is too large (to save time when loading large files)
	- rdbadmin: point attribute dialog window uses scientific number notation on demand

 2017-12-11: Version 2.1.4
	- Fixed bug in QueryUpdate that caused incorrect point attribute minimum/maximum values in some cases (#2804)
	- Added function to merge point attribute details defined in multiple point cloud databases (#2586)
	- Added function to suggest point attribute buffer data type based on point attribute details (#2587)
	- Definition of point attributes and meta data items for trajectory (position+orientation) files added
	- Definition of point attribute "riegl.voxel_collapsed" added
	- Definition of point attribute "riegl.timestamp" modified (#2588)
	- Definition of point attribute "riegl.pca_extents" modified
	- Definition of point attribute "riegl.std_dev" modified
	- Definition of meta data item "riegl.scan_pattern" updated
	- C++ API: constructors of interface classes declared as "explicit" (#2825)
	- rdbadmin: database location history list fixed
	- rdbadmin: point attribute order can be changed with "drag-and-drop" on page "Point Data"
	- rdbadmin: re-format meta data values in overview table if JSON format is used
	- rdbadmin: fixed application icon on Windows

 2017-10-27: Version 2.1.3
	- Performance of QueryUpdate improved (#2783)
	- Support for 2D (length = 2) primary point attributes added (#2770)
	- Point attribute "riegl.line_angle_coarse" added
	- Meta data item "riegl.gaussian_decomposition" added
	- Meta data is no longer loaded when the database is opened, but only when needed (#2793)
	- rdbadmin: new menu to insert index/point filter expression terms (#2767)
	- rdbadmin: new menu to load/save transaction comments+settings from/to text file
	- rdbadmin: new menu to load/save meta data values from/to text file
	- rdbadmin: new menu to load/save point attributes from/to JSON file
	- rdbadmin: new inspection mode to calculate attribute histograms
	- rdbadmin: load/save position and size of dialog windows

 2017-10-09: Version 2.1.2
	- New database files are tagged with an UUID (#2720)
	- Allow creation of databases where the primary point attribute is "riegl.id" (#2691)
	- Fixed bug in QueryUpdate that caused LOD points to disappear after modifying the primary point attribute (#2604)
	- Enhanced file consistency check routines to detect damaged files (#2763)
	- Fixed race condition in library cleanup code that occurred on Windows (#2668)
	- Library file was missing in Python Wheel packages on Linux and Darwin (macOS)
	- rdbadmin and rdbinfo failed on files that contained no points
	- rdbadmin allows to filter index tree by node id or filter expression
	- Attributes and metadata descriptions for waveform files added
	- Definition of attribute "riegl.amplitude" modified
	- Definition of attribute "riegl.plane_count" fixed
	- CMake file revised

 2017-04-20: Version 2.1.1
	- New function to dismiss database history/transactions (#2455)
	- New function to reorganize database file to release unused space (#2422)
	- New function to check if a file is a RDB 2 database file (#2487)
	- New point attributes for laser shots (time stamp, origin and direction) and plane patches (count)
	- New point attribute property "scaleFactor" for real point attributes, i.e. where resolution != 1 (#2552)
	- New meta data items: "Plane Patch Statistics", "Atmosphere" and "Geometric Scale Factor" (#2577)
	- New management interface added for changing coarse point cloud representation (level-of-detail, #2550)
	- Fixed race condition in library cleanup code that occurred on Linux (#2507)
	- Fixed bug in handling of dynamic point attributes that caused an (almost) endless-loop (#2495)
	- Fixed bug that caused attribute extents stored in primary index graph to become invalid (#2522)
	- Fixed access violation in level-of-detail (LOD) generation for empty point clouds
	- Fixed bug in LOD generation that occurred when an attribute wasn't available for all points (#2523, #2567)
	- Fixed bug that caused point counts of intermediate (LOD) nodes to become invalid when deleting points (#2594)
	- Fixed bug in python bindings that occurred when using the 'array' module (if NumPy is not available)
	- Moved error QueryBindAttributeBufferVoid from bind() to next() of insert, remove, update and select queries (#2477)
	- Creating a new transaction sometimes failed with "Failed to acquire database transaction lock" on Windows
	- RDB library version added to transaction details (#2515)
	- SDK for Darwin (macOS) contains rdbadmin application bundle for easy installation (#2468)
	- rdbadmin allows to select column separator for export to .csv files and suggests filename
	- Loading PointAttribute, CreateSettings and OpenSettings objects from JSON strings improved (#2563)
	- Meta data item "Device Information" extended by optional field "channel_number"
	- Definition of attribute "riegl.covariances" fixed
	- Library search path in qmake .pri file fixed
	- Compiler warning in Pascal bindings fixed
	- Boost libraries updated to version 1.63.0
	- Zstandard library updated to version 1.1.3
	- zlib library updated to version 1.2.11
	- Error handling improved
	- New database file format version: 1.3

	NOTE: files CREATED or MODIFIED with this version can NOT be opened with older versions!

 2017-01-11: Version 2.1.0
	- Using new compression library (compatible with old rdbx files, #2385)
	- Added optional point attribute pre-compression steps to improve compression results (#2423)
	- New query added to set one ore more attributes of all points to the same value (#1926)
	- New query added to invert the values of one ore more attributes of all points (#2406)
	- New functions to load/save PointAttribute, CreateSettings and OpenSettings objects from/to JSON strings (#2425)
	- Fixed bug that occurred when modifying attributes of deleted or not existing points (#2387)
	- Fixed bug that occurred when modifying the database after restoring a previous transaction (#2393)
	- Fixed bug that occurred when modifying the primary point attribute (#2326)
	- Fixed bug that caused poor read performance on modified dynamic point attributes (#2395)
	- Fixed bug that caused wrong point attribute limits after discarding the attribute (#2440)
	- Fixed performance issue in QueryInsert that occurred for primary point attributes other than riegl.xyz (#2421)
	- Select query allows to define a list of nodes to read points from (#2368)
	- Stat query allows to define a filter string for reading the index graph (#2390)
	- Shortcut function to define built-in RIEGL default point attributes added
	- Progress output of select query improved (#2386, #2454)
	- Fixed typos in Pascal interface wrappers (#2388)
	- Point Attribute and Meta Data Description files (.xhtml) improved and auto-generated Pascal, C, C++ and Python bindings added to the SDK (#2389)
	- Point Attribute table JSON file uses underscore instead of camel case for field names (#2425)
	- New meta data item: "Range Statistics"
	- Windows version of RDB library no longer depends on MSVC runtime libraries (#2392)
	- Python interface: new optional parameter "chunk_size" added to Pointcloud::select()
	- Python interface: use two-dimensional arrays for vector attributes (if NumPy is available)
	- CMake version file added
	- CMake and qmake files moved up one folder
	- New database file format version: 1.2

	NOTE: files CREATED with this version can NOT be opened with older versions!

 2016-10-05: Version 2.0.938
	- New LOD algorithm (#2286)
	- Fixed problem that occurred when the client application uses a different version of Google's protobuf library than the RDB library does
	- Allow modification (update) of primary point attribute (usually the point coordinates, #2326)
	- Transaction lock file (.rdbx.lock) was not deleted in some cases
	- TransactionScope class' commit() function accepts optional progress function pointer (#2303)
	- Parameter "cache size" changed from 32 to 64 bit data type (#2270)
	- QuerySelect does no longer throw an error if user gave ID of a deleted primary index node
	- New SDK for Darwin (Mac OS X on x86-64, experimental)
	- Database open/create error handling improved
	- CMake file revised

 2016-06-22: Version 2.0.802
	- Performance of point insertion (QueryInsert) improved (#1872)
	- Level of Detail (LOD) algorithm improved (#1872)
	- Performance benchmark tool "rdbmark" added (#2102)
	- Command line tool "rdbinfo" added (similar to "rdbadmin")
	- Windows SDK: Product information resources (name, version) embedded in all binaries (#2206)
	- Linux SDK: Library version included in name of .so file (#2206)
	- Default compression level changed from 30% to 10% (faster while file size is almost the same)
	- Added API function to decode attribute descriptor to attribute name and array index (#2226)
	- Python package for RDB library and example scripts added (#2252)
	- Transaction commit() function accepts optional progress function pointer (#2251)
	- C++ code examples revised
	- CMake file revised
	- New database file format version: 1.1

 2016-03-24: Version 2.0.604
	- Typos in example source code fixed
	- Typos in Delphi interface files fixed (#1992)
	- Fixed bug that occurred when using QuerySelect and QueryRemove in one loop (#2000)
	- Attributes are rounded instead of truncated when converted to internal representation (#2097)
	- Linux SDK: preserve file links instead of making copies of the library file
	- Linux SDK: library dependencies boost, protobuf and zlib removed (#1833)
	- Linux SDK: available for ARM (armv7l, #2087)

 2016-01-20: Version 2.0.543
	- Fixed bug in QueryInsert when combining point clouds with different point attributes (#1971)
	- Number of points was not updated correctly when removing points (again, #1916)
	- First version included in RiSCAN PRO 2.2

 2016-01-13: Version 2.0.536
	- Fixed bug in point attribute data duplication function (#1930)
	- Fixed bug in QueryInsert when combining point clouds with different point attributes (#1959)
	- Error handling in QuerySelect improved
	- Handling of NAN and INF values improved (#1970)

 2016-01-11: Version 2.0.524
	- Fixed crash that occurred when appending points and not binding a buffer for all point attributes (#1954)
	- Parameter 'chunk size' was ignored when creating a database (#1923)
	- Added function to duplicate point attribute data (#1930)
	- Added function to discard point attribute data (#1946)

 2015-12-14: Version 2.0.501
	- Improvements for special case of removing all points (#1878)
	- Number of points was not updated correctly when removing points (#1916)

 2015-12-10: Version 2.0.492
	- Fixed "Internal database error 90504" when reloading a
	  database after deleting dynamic point attributes (#1893)
	- Update index graph node revision on point attribute change (#1900)
	- Sporadic crash in Pointcloud::close() fixed (#1859)
	- Fixed database synchronization problems when same rdbx file is
	  accessed twice (same or different process) on Linux systems
	- Typo in example 3 (select) fixed
	- C++ API improvements (#1906)
	- Architecture names changed from "x32" and "x64" to the more common "x86" and "x86_64"
	- Optional CMake and qmake configuration files added

 2015-12-02: Version 2.0.459
	- Creating transactions is faster now (#1882)
	- Fixed race condition in QueryUpdate (#1884)
	- Fixed race condition in QuerySelect (#1885)

	NOTE: this version is not compatible with older .rdbx files!

 2015-11-27: Version 2.0.441
	- Opening a database is faster now (#1871)
	- Optimized QuerySelect for counting points (#1839)
	- Fixed crash in QuerySelect when database was modified by an
	  other instance (#1875)
	- Pointcloud::transaction()::current() gave wrong result when
	  database was modified by other instance (#1877)
	- New meta data item: "Geo Tag"

	NOTE: this version is not compatible with older .rdbx files!

 2015-11-23: Version 2.0.414
	- Fixed "Internal database error (code 90903)" error (#1803)
	- Fixed "Invalid buffer size" error (#1808)
	- Fixed "Decompression failed" error (#1828)
	- Fixed bug that caused number of reported points to be wrong
	- New point attribute "riegl.distance_to_surface" added (#1834)
	- Definition of "riegl.pulse_width" point attribute fixed

 2015-10-29: Version 2.0, beta 1
	- first version provided to beta testers
	- database file format version: 1.0

________________________________________________________________________________
 RIEGL LASER MEASUREMENT SYSTEMS
