readers.rdb#
The RDB reader reads from files in the RDB format, the in-house format used by RIEGL Laser Measurement Systems GmbH.
Dynamic Plugin
This stage requires a dynamic plugin to operate
Streamable Stage
This stage supports streaming operations
Installation#
To build PDAL with rdb support, set rdb_DIR
to the path of your local
rdblib installation. rdblib can be obtained from the RIEGL download pages
with a properly enabled user account. The rdblib files do not need to be
in a system-level directory, though they could be (e.g. they could be in
/usr/local
, or just in your home directory somewhere). For help building
PDAL with optional libraries, see the optional library documentation.
Note
Minimum rdblib version required to build the driver and run the tests: 2.1.6
This driver was developed and tested on Ubuntu 17.10 using GCC 7.2.0.
Example#
This example pipeline reads points from a RDB file and stores them in LAS
format. Only points classified as “ground points” are read since option
filter
is set to “riegl.class == 2” (see line 5).
1[
2 {
3 "type": "readers.rdb",
4 "filename": "autzen-thin-srs.rdbx",
5 "filter": "riegl.class == 2"
6 },
7 {
8 "type": "writers.las",
9 "filename": "autzen-thin-srs.rdbx"
10 }
11]
Options#
- filename
Name of file to read [Required]
- count
Maximum number of points to read. [Default: unlimited]
- override_srs
Spatial reference to apply to the data. Overrides any SRS in the input itself. Can be specified as a WKT, PROJ or EPSG string. Can’t use with ‘default_srs’. [Default: none]
- default_srs
Spatial reference to apply to the data if the input does not specify one. Can be specified as a WKT, PROJ or EPSG string. Can’t use with ‘override_srs’. [Default: none]
- filter
Point filter expression string (see RDB SDK documentation for details) [Optional] [Default: empty string (= no filter)]
- extras
Read all available dimensions (
true
) or known PDAL dimensions only (false
) [Optional] [Default: false]
Dimensions#
The reader maps following default RDB point attributes to PDAL dimensions (if they exist in the RDB file):
RDB attribute |
PDAL dimension(s) |
---|---|
riegl.id |
Id::PointId |
riegl.source_cloud_id |
Id::OriginId |
riegl.timestamp |
Id::InternalTime |
riegl.xyz |
Id::X, Id::Y, Id::Z |
riegl.intensity |
Id::Intensity |
riegl.amplitude |
Id::Amplitude |
riegl.reflectance |
Id::Reflectance |
riegl.deviation |
Id::Deviation |
riegl.pulse_width |
Id::PulseWidth |
riegl.background_radiation |
Id::BackgroundRadiation |
riegl.target_index |
Id::ReturnNumber |
riegl.target_count |
Id::NumberOfReturns |
riegl.scan_direction |
Id::ScanDirectionFlag |
riegl.scan_angle |
Id::ScanAngleRank |
riegl.class |
Id::Classification |
riegl.rgba |
Id::Red, Id::Green, Id::Blue |
riegl.surface_normal |
Id::NormalX, Id::NormalY, Id::NormalZ |
All other point attributes that may exist in the RDB file are ignored unless
the option extras
is set to true
. If so, a custom dimension is defined
for each additional point attribute, whereas the dimension name is equal to
the point attribute name.
Note
Point attributes are read “as-is”, no scaling or unit conversion is done
by the reader. The only exceptions are point coordinates (riegl.xyz
)
and surface normals (riegl.surface_normal
) which are transformed to
the RDB file’s SRS by applying the matrix defined in the (optional) RDB
file metadata object riegl.geo_tag
.
Metadata#
The reader adds following objects to the stage’s metadata node:
Object “database”#
Contains basic information about the RDB file such as the bounding box, number of points and the file ID.
1 {
2 "bounds": {
3 "maximum": {
4 "X": -2504493.762,
5 "Y": -3846841.252,
6 "Z": 4413210.394
7 },
8 "minimum": {
9 "X": -2505882.459,
10 "Y": -3848231.393,
11 "Z": 4412172.548
12 }
13 },
14 "points": 10653,
15 "uuid": "637de54d-7e6b-4004-b6ab-b6bc588ec9ea"
16 }
List “dimensions”#
List of point attribute description objects.
1 [{
2 "compression_options": "shuffle",
3 "default_value": 0,
4 "description": "Cartesian point coordinates wrt. application coordinate system (0: X, 1: Y, 2: Z)",
5 "invalid_value": "",
6 "length": 3,
7 "maximum_value": 535000,
8 "minimum_value": -535000,
9 "name": "riegl.xyz",
10 "resolution": 0.00025,
11 "scale_factor": 1,
12 "storage_class": "variable",
13 "title": "XYZ",
14 "unit_symbol": "m"
15 },
16 {
17 "compression_options": "shuffle",
18 "default_value": 0,
19 "description": "Target surface reflectance",
20 "invalid_value": "",
21 "length": 1,
22 "maximum_value": 327.67,
23 "minimum_value": -327.68,
24 "name": "riegl.reflectance",
25 "resolution": 0.01,
26 "scale_factor": 1,
27 "storage_class": "variable",
28 "title": "Reflectance",
29 "unit_symbol": "dB"
30 }]
Details about the point attribute properties see RDB SDK documentation.
Object “metadata”#
Contains one sub-object for each metadata object stored in the RDB file.
1 {
2 "riegl.scan_pattern": {
3 "rectangular": {
4 "phi_start": 45.0,
5 "phi_stop": 270.0,
6 "phi_increment": 0.040,
7 "theta_start": 30.0,
8 "theta_stop": 130.0,
9 "theta_increment": 0.040,
10 "program": {
11 "name": "High Speed"
12 }
13 }
14 },
15 "riegl.geo_tag": {
16 "crs": {
17 "epsg": 4956,
18 "wkt": "GEOCCS[\"NAD83(HARN) \/ Geocentric\",DATUM[\"NAD83(HARN)\",SPHEROID[\"GRS 1980\",6378137.000,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0.0000000000000000,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"Meter\",1.00000000000000000000,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",OTHER],AXIS[\"Y\",EAST],AXIS[\"Z\",NORTH],AUTHORITY[\"EPSG\",\"4956\"]]"
19 },
20 "pose": [
21 0.837957447, 0.379440385, -0.392240121, -2505819.156,
22 -0.545735575, 0.582617132, -0.602270669, -3847595.645,
23 0.000000000, 0.718736580, 0.695282481, 4412064.882,
24 0.000000000, 0.000000000, 0.000000000, 1.000
25 ]
26 }
27 }
The riegl.geo_tag
object defines the Spatial Reference System (SRS) of the
file. The point coordinates are actually stored in a local coordinate system
(usually horizontally leveled) which is based on the SRS. The transformation
from the local system to the SRS is defined by the 4x4 matrix pose
which
is stored in row-wise order. Point coordinates (riegl.xyz
) and surface
normals (riegl.surface_normal
) are automatically transformed to the SRS
by the reader.
Details about the metadata objects see RDB SDK documentation.
List “transactions”#
List of transaction objects describing the history of the file.
1 [{
2 "agent": "RDB Library 2.1.6-1677 (x86_64-windows, Apr 5 2018, 10:58:39)",
3 "comments": "",
4 "id": 1,
5 "rdb": "RDB Library 2.1.6-1677 (x86_64-windows, Apr 5 2018, 10:58:39)",
6 "settings": {
7 "cache_size": 524288000,
8 "chunk_size": 65536,
9 "chunk_size_lod": 20,
10 "compression_level": 10,
11 "primary_attribute": {
12 "compression_options": "shuffle",
13 "default_value": 0,
14 "description": "Cartesian point coordinates wrt. application coordinate system (0: X, 1: Y, 2: Z)",
15 "invalid_value": "",
16 "length": 3,
17 "maximum_value": 535000,
18 "minimum_value": -535000,
19 "name": "riegl.xyz",
20 "resolution": 0.00025,
21 "scale_factor": 1,
22 "storage_class": "variable",
23 "title": "XYZ",
24 "unit_symbol": "m"
25 }
26 },
27 "start": "2018-04-06 10:10:39.336",
28 "stop": "2018-04-06 10:10:39.336",
29 "title": "Database creation"
30 },
31 {
32 "agent": "rdbconvert",
33 "comments": "",
34 "id": 2,
35 "rdb": "RDB Library 2.1.6-1677 (x86_64-windows, Apr 5 2018, 10:58:39)",
36 "settings": "",
37 "start": "2018-04-06 10:10:39.339",
38 "stop": "2018-04-06 10:10:39.380",
39 "title": "Import"
40 },
41 {
42 "agent": "RiSCAN PRO 64 bit v2.6.3",
43 "comments": "",
44 "id": 3,
45 "rdb": "RDB Library 2.1.6-1677 (x86_64-windows, Apr 5 2018, 10:58:39)",
46 "settings": "",
47 "start": "2018-04-06 10:10:41.666",
48 "stop": "2018-04-06 10:10:41.666",
49 "title": "Meta data saved"
50 }]
Details about the transaction objects see RDB SDK documentation.