| RDB 2

RDB 2 Documentation

# Introduction

The RIEGL RDB library offers tools to efficiently organize, compress and store point clouds.

# Features

- Point cloud is stored in a single indexed and compressed file
- Variable number of point attributes (dimensions)
- Dynamic point cloud, i.e. insert, remove or update points at any time
- Flexible point query function that allows to
  - specify simple point attribute filters (similar to SQL's WHERE clause)
  - read points into 8/16/32/64 bit integer or 32/64 bit floating point data buffers with on-the-fly data type conversion
  - read points into array- or record-like data containers
- Multiple coarse representations of the original point cloud for fast 3D visualization (level of detail)
- Block-oriented algorithms to support large number of points
- Log point cloud modifications to journal (transaction log)

# Interface

The core library has a C-style interface (API). The RDB SDK contains client side wrappers for following programming languages:

- C
- C++
- Pascal (Delphi)
- Python

The interface files for each language can be found in a separate sub-folder in the "interface" folder of the RDB SDK.

# Documentation

The best point to start at is to have a look on the class riegl::rdb::Pointcloud which is the main database management and access class.

Remarks
  This documentation only covers the C++ interface - all other interfaces are very similar. Details about other language interfaces can be found in the corresponding interface (header) files.

Note
  All strings are expected to be UTF-8 encoded.

Warning
  Thread-Safety: Accessing the same instance of riegl::rdb::Context, riegl::rdb::Pointcloud or riegl::rdb::pointcloud::PointAttribute from multiple threads at the same time is not safe, no matter if accessing the instance through its methods directly or indirectly (e.g. through any of the 'Query' classes). You either must ensure that only one thread accesses the point cloud (and thus the context) at a time or use multiple different instances of riegl::rdb::Context and riegl::rdb::Pointcloud and open the same database file. See also documentation of class riegl::rdb::Pointcloud, especially for the constructor.

# Examples

C++ example code can be found on the "Examples" page.

# License

    Copyright (c) 2015-2025 RIEGL LASER MEASUREMENT SYSTEMS

    1. By downloading, installing, copying or otherwise using the Software
       you (the "Licensee") agree to be bound by the licensing terms set
       forth herein.

    2. Obligations of the Licensee:

    i.   Licensee must not, nor attempt to, itself, or by encouraging any
         third party to do so, decompile, disassemble or otherwise reverse
         engineer the Software.

    ii.  Licensee shall not be entitled to distribute the Software alone as
         a separate product.

    iii. Licensee may distribute the Software bundled with third party software
         with a name distinguishable from the Software's name and provided that
         it agrees with the end-users on terms at least as protective for RIEGL
         as the terms set forth herein.

    iv.  Licensee shall be solely responsible for testing the Software and
         ensuring its compatibility with other software.

    3. The Software is provided on an "AS IS" basis. To the maximum extent
       permitted by law, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS,
       AND WARRANTIES including, without limitation, any implied warranty or
       condition of merchantability and fitness for a particular purpose ARE
       HEREBY EXPRESSLY EXCLUDED AND ARE EXPRESSLY DISCLAIMED BY RIEGL AND ITS
       SUPPLIERS. Without limiting the generality of the foregoing, RIEGL does
       not warrant that the licensed Software is accurate, will meet Licensee's
       requirements, will operate in any combination that may be selected for
       use by Licensee or in combination with other software, will operate
       uninterrupted or error free etc. Furthermore, RIEGL does not warrant
       that any errors, defects or inefficiencies will be recovered, nor does
       RIEGL assume any liability for failure to correct any such error, defect
       or inefficiency. RIEGL makes no warranty, and Licensee assumes the entire
       risk as to the integrity of any data and the results, capabilities,
       suitability, use, or performance of the Software.

    4. Licensee acknowledges that RIEGL has the right but NOT THE OBLIGATION
       to provide maintenance, support, updates, enhancements, modifications,
       information about the availability on new downloads or other support
       services related to the Software. RIEGL reserves the right to cease the
       development of the Software, or the Software's free distribution at any
       time under express preclusion of any and all reimbursement to (or other
       raise of claims by) the Licensee.

License terms of the libraries the RIEGL RDB library is based on see folder "manual/licenses".