{*
 *******************************************************************************
 *
 *  Copyright 2026 RIEGL Laser Measurement Systems
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *  SPDX-License-Identifier: Apache-2.0
 *
 *******************************************************************************
 *}
{*!
 *******************************************************************************
 *
 * \author  RIEGL LMS GmbH, Austria
 * \brief   Description of RIEGL RDB 2 database meta data items.
 * \version 2015-10-27/AW: Initial version
 * \version 2015-11-25/AW: Item "Geo Tag" added
 * \version 2016-10-27/AW: Item "Voxel Information" added
 * \version 2016-11-17/AW: Item "Voxel Information" updated
 * \version 2016-12-12/AW: Item "Range Statistics" added
 * \version 2017-03-08/AW: Item "Plane Patch Statistics" added
 * \version 2017-04-05/AW: Items "Atmosphere" and "Geometric Scale Factor" added
 * \version 2017-08-22/AW: Items for waveform sample block and value files added
 * \version 2017-10-24/AW: Item "Gaussian Decomposition" added
 * \version 2017-11-13/AW: Item "riegl.scan_pattern" updated
 * \version 2017-11-21/AW: Item "riegl.trajectory_info" added
 * \version 2018-01-11/AW: Item "riegl.beam_geometry" added
 * \version 2018-01-15/AW: Item "riegl.reflectance_calculation" added
 * \version 2018-01-15/AW: Item "riegl.near_range_correction" added
 * \version 2018-01-15/AW: Item "riegl.device_geometry" added
 * \version 2018-02-13/AW: Item "riegl.notch_filter" added
 * \version 2018-03-08/AW: Item "riegl.window_echo_correction" added
 * \version 2018-03-15/AW: Item "riegl.pulse_position_modulation" added
 * \version 2018-05-24/AW: Item "riegl.pixel_info" added
 * \version 2018-06-08/AW: Item "riegl.shot_info" added
 * \version 2018-06-08/AW: Item "riegl.echo_info" added
 * \version 2018-06-14/AW: Item "riegl.mta_settings" added
 * \version 2018-06-14/AW: Item "riegl.receiver_internals" added
 * \version 2018-06-14/AW: Item "riegl.device_output_limits" added
 * \version 2018-06-26/AW: Schema: replace "number" with "integer" if applicable
 * \version 2018-07-09/AW: Item "riegl.pose_estimation" added
 * \version 2018-07-09/AW: Item "riegl.pose_sensors" added
 * \version 2018-09-20/AW: Item "riegl.pointcloud_info" added
 * \version 2018-11-08/AW: Item "riegl.scan_pattern" updated
 * \version 2018-11-13/AW: Item "riegl.receiver_internals" updated
 * \version 2019-03-06/AW: Item "riegl.receiver_internals" updated
 * \version 2019-03-21/AW: Item "riegl.device_geometry" updated
 * \version 2019-04-15/AW: Item "riegl.point_attribute_groups" added
 * \version 2019-04-30/AW: Item "riegl.waveform_settings" added
 * \version 2019-10-03/AW: Item "riegl.angular_notch_filter" added
 * \version 2019-10-03/AW: Item "riegl.noise_estimates" added
 * \version 2019-10-25/AW: Item "riegl.window_analysis" added
 * \version 2019-11-06/AW: Item "riegl.georeferencing_parameters" added
 * \version 2019-11-27/AW: Item "riegl.plane_patch_matching" added
 * \version 2019-12-13/AW: Items for tie-/control objects added
 * \version 2019-12-19/AW: Items for tie-/control objects added
 * \version 2020-02-04/AW: Item "riegl.detection_probability" added
 * \version 2020-02-04/AW: Item "riegl.licenses" added
 * \version 2020-04-27/AW: Item "riegl.waveform_info" updated (schema+example)
 * \version 2020-09-03/AW: Item "riegl.reflectance_correction" added
 * \version 2020-09-10/AW: Item "riegl.device_geometry_passive_channel" added
 * \version 2020-09-25/AW: Item "riegl.georeferencing_parameters" updated
 * \version 2020-09-25/AW: Item "riegl.trajectory_info" updated
 * \version 2020-09-29/AW: Item "riegl.temperature_calculation" added
 * \version 2020-10-23/AW: Item "riegl.exponential_decomposition" added (#3709)
 * \version 2020-11-30/AW: Item "riegl.notch_filter" updated (schema)
 * \version 2020-12-02/AW: Item "riegl.georeferencing_parameters" updated (schema)
 * \version 2021-02-02/AW: Item "riegl.plane_slope_class_info" added (rdbplanes/#7)
 * \version 2021-02-16/AW: Item "riegl.device_output_limits" updated (schema, #3811)
 * \version 2021-03-03/AW: Item "riegl.exponential_decomposition" updated (schema, #3822)
 * \version 2021-03-03/AW: Item "riegl.waveform_averaging_settings" added (#3821)
 * \version 2021-04-01/AW: Item "riegl.voxel_info" updated (schema, #3854)
 * \version 2021-04-16/AW: Item "riegl.voxel_info" updated (schema, #3866)
 * \version 2021-09-30/AW: Item "riegl.waveform_info" updated (schema+example, #4016)
 * \version 2021-10-04/AW: Improved spelling of the descriptions of some items
 * \version 2021-11-04/AW: Rename "riegl.record_names" to "riegl.item_names" (#4034)
 * \version 2022-03-11/AW: Item "riegl.devices" added (#4162)
 * \version 2022-03-14/AW: Item "riegl.stored_filters" added (#4164)
 * \version 2022-09-20/AW: Fix typos in schema of "riegl.georeferencing_parameters"
 * \version 2022-09-30/AW: Item "riegl.system_description" added (#4368)
 * \version 2022-10-10/AW: Correction of typos in the titles of some entries
 * \version 2022-10-20/AW: Item "riegl.stored_filters" updated (example, #4164)
 * \version 2023-01-19/AW: Item "riegl.ttip_configuration" added (#4449)
 * \version 2024-09-26/AW: Item "riegl.dyntrig" added (#5310)
 * \version 2025-03-21/AW: Item "riegl.dmi_config" added (#5571)
 * \version 2025-07-01/AW: Item "riegl.gnss_processing_info" added (#5777)
 * \version 2025-07-01/AW: Item "riegl.riloc_processing_info" added (#5777)
 * \version 2025-11-11/AW: Item "riegl.lag_angle_correction" added (#6068)
 * \version 2026-03-09/AW: Item "riegl.tie_object_reference_file" added (#6282)
 * \version 2026-04-02/AW: Item "riegl.imported_control_objects" added (#6282)
 *
 *******************************************************************************
 *}

unit riegl.rdb.default.metadata;

{$WRITEABLECONST ON} // see section "initialization"

interface

// Meta data items definition version
const
  RDB_META_DATA_ITEMS_VERSION = '1.1.58';
  RDB_META_DATA_ITEMS_DATE = '2026-04-02';

// Meta data item states
const
  RDB_STATUS_REQUIRED = 1; // mandatory item
  RDB_STATUS_OPTIONAL = 2; // optional item

// Container record for meta data item details
type
  TRDBPointcloudMetaDataItemInfo = record
    Name        : System.String;
    Title       : System.String;
    Description : System.String;
    Status      : System.Byte;
    Schema      : System.String;
    Example     : System.String;
  end;
  PRDBPointcloudMetaDataItemInfo = ^TRDBPointcloudMetaDataItemInfo;

// Angular notch filter parameters for window glass echoes
const
  RDB_RIEGL_ANGULAR_NOTCH_FILTER : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.angular_notch_filter';
    Title       : 'Angular Notch Filter';
    Description : 'Angular notch filter parameters for window glass echoes';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Angular notch filter parameters for window glass echoe'
      + 's","type":"object","$schema":"http://json-schema.org/draft-04/schema#"'
      + ',"title":"Angular Notch Filter","required":["angle","range_mean","ampl'
      + 'itude_mean"],"properties":{"range_mean":{"type":"array","description":'
      + '"Mean range [m]","items":{"type":"number"}},"angle":{"type":"array","d'
      + 'escription":"Angle [deg]","items":{"type":"number"}},"amplitude_mean":'
      + '{"type":"array","description":"Mean amplitude '
      + '[dB]","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"range_mean":[0.094,0.094,0.09075,0.08675,0.0815,0.0775,0.074,0.071,0'
      + '.068,0.0675,0.06475],"angle":[14.0,15.0,16.0,17.0,18.0,19.0,20.0,21.0,'
      + '22.0,23.0,24.0],"amplitude_mean":[3.780913,3.780913,3.480913,3.120913,'
      + '2.850913,2.720913,2.680913,2.610913,2.530913,2.570913,2.570913]}'
    );
  );

// Atmospheric parameters
const
  RDB_RIEGL_ATMOSPHERE : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.atmosphere';
    Title       : 'Atmosphere';
    Description : 'Atmospheric parameters';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Atmospheric parameters","type":"object","$schema":"htt'
      + 'p://json-schema.org/draft-04/schema#","title":"Atmospheric Parameters"'
      + ',"required":["temperature","pressure","rel_humidity","pressure_sl","am'
      + 'sl","group_velocity","attenuation","wavelength"],"properties":{"pressu'
      + 're":{"type":"number","description":"Pressure along measurment path '
      + '[mbar]"},"group_velocity":{"type":"number","description":"Group '
      + 'velocity of laser beam '
      + '[m/s]"},"wavelength":{"type":"number","description":"Laser wavelength '
      + '[nm]"},"attenuation":{"type":"number","description":"Atmospheric '
      + 'attenuation '
      + '[1/km]"},"rel_humidity":{"type":"number","description":"Relative '
      + 'humidity along measurement path '
      + '[%]"},"amsl":{"type":"number","description":"Height above mean sea '
      + 'level (AMSL) '
      + '[m]"},"pressure_sl":{"type":"number","description":"Atmospheric '
      + 'pressure at sea level '
      + '[mbar]"},"temperature":{"type":"number","description":"Temperature '
      + 'along measurement path [\u00b0C]"}}}'
    );

    Example : (''
      + '{"pressure":970,"group_velocity":299711000.0,"wavelength":1550,"attenu'
      + 'ation":0.028125,"rel_humidity":63,"amsl":0,"pressure_sl":970,"temperat'
      + 'ure":7}'
    );
  );

// Laser beam geometry details
const
  RDB_RIEGL_BEAM_GEOMETRY : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.beam_geometry';
    Title       : 'Beam Geometry';
    Description : 'Laser beam geometry details';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Laser beam geometry details","type":"object","$schema"'
      + ':"http://json-schema.org/draft-04/schema#","title":"Beam Geometry","re'
      + 'quired":["beam_exit_diameter","beam_divergence"],"properties":{"beam_e'
      + 'xit_diameter":{"description":"Beam width at exit aperture [m]","type":'
      + '"number","minimum":0,"exclusiveMinimum":false},"beam_divergence":{"des'
      + 'cription":"Beam divergence in far field '
      + '[rad]","type":"number","minimum":0,"exclusiveMinimum":false}}}'
    );

    Example : (''
      + '{"beam_exit_diameter":0.0072,"beam_divergence":0.0003}'
    );
  );

// List of control object type definitions
const
  RDB_RIEGL_CONTROL_OBJECT_CATALOG : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.control_object_catalog';
    Title       : 'Control Object Catalog';
    Description : 'List of control object type definitions';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"List of control object type definitions","type":"objec'
      + 't","$schema":"http://json-schema.org/draft-04/schema#","title":"Contro'
      + 'l Object Catalog","required":["types"],"definitions":{"chevron":{"desc'
      + 'ription":"chevron","type":"object","allOf":[{"$ref":"#/definitions/com'
      + 'mon"},{"description":"chevron specific properties","type":"object","pr'
      + 'operties":{"shape":{"description":"shape identifier","type":"string","'
      + 'enum":["chevron"]},"outside_edge_length":{"description":"length of the'
      + ' two outer edges in meters","type":"number","minimum":0,"exclusiveMini'
      + 'mum":true},"thickness":{"description":"thickness in meters","type":"nu'
      + 'mber","minimum":0,"exclusiveMinimum":true}},"required":["shape","outsi'
      + 'de_edge_length","thickness"]}]},"common":{"description":"common object'
      + ' properties","type":"object","properties":{"name":{"description":"uniq'
      + 'ue type identifier","type":"string","minLength":3},"description":{"des'
      + 'cription":"string describing the '
      + 'object","type":"string"},"shape":{"description":"shape identifier","ty'
      + 'pe":"string","enum":["rectangle","checkerboard2x2","chevron","circular'
      + '_disk","cylinder","sphere","round_corner_cube_prism"]},"surface_type":'
      + '{"description":"surface material type","type":"string","enum":["retro_'
      + 'reflective_foil","diffuse"]}},"required":["name","shape"]},"circular_d'
      + 'isk":{"description":"circular disk","type":"object","allOf":[{"$ref":"'
      + '#/definitions/common"},{"description":"circular disk specific properti'
      + 'es","type":"object","properties":{"diameter":{"description":"diameter '
      + 'in meters","type":"number","minimum":0,"exclusiveMinimum":true},"offse'
      + 't":{"description":"offset in meters, e.g. reflector constant '
      + '(optional)","type":"number"},"shape":{"description":"shape identifier"'
      + ',"type":"string","enum":["circular_disk"]}},"required":["shape","diame'
      + 'ter"]}]},"cylinder":{"description":"cylinder","type":"object","allOf":'
      + '[{"$ref":"#/definitions/common"},{"description":"cylinder specific pro'
      + 'perties","type":"object","properties":{"diameter":{"description":"diam'
      + 'eter in meters","type":"number","minimum":0,"exclusiveMinimum":true},"'
      + 'shape":{"description":"shape identifier","type":"string","enum":["cyli'
      + 'nder"]},"height":{"description":"height in meters","type":"number","mi'
      + 'nimum":0,"exclusiveMinimum":true}},"required":["shape","diameter","hei'
      + 'ght"]}]},"sphere":{"description":"sphere","type":"object","allOf":[{"$'
      + 'ref":"#/definitions/common"},{"description":"sphere specific propertie'
      + 's","type":"object","properties":{"diameter":{"description":"diameter '
      + 'in meters","type":"number","minimum":0,"exclusiveMinimum":true},"shape'
      + '":{"description":"shape identifier","type":"string","enum":["sphere"]}'
      + '},"required":["shape","diameter"]}]},"checkerboard2x2":{"description":'
      + '"checkerboard 2 by 2","type":"object","allOf":[{"$ref":"#/definitions/'
      + 'common"},{"description":"checkerboard specific properties","type":"obj'
      + 'ect","properties":{"shape":{"description":"shape identifier","type":"s'
      + 'tring","enum":["checkerboard2x2"]},"square_length":{"description":"len'
      + 'gth of a square of the checkerboard in meters","type":"number","minimu'
      + 'm":0,"exclusiveMinimum":true}},"required":["shape","square_length"]}]}'
      + ',"rectangle":{"description":"rectangle","type":"object","allOf":[{"$re'
      + 'f":"#/definitions/common"},{"description":"rectangle specific properti'
      + 'es","type":"object","properties":{"length":{"description":"length in m'
      + 'eters","type":"number","minimum":0,"exclusiveMinimum":true},"shape":{"'
      + 'type":"string","enum":["rectangle"]},"width":{"description":"width in '
      + 'meters","type":"number","minimum":0,"exclusiveMinimum":true}},"require'
      + 'd":["shape","length","width"]}]},"round_corner_cube_prism":{"descripti'
      + 'on":"round corner cube prism","type":"object","allOf":[{"$ref":"#/defi'
      + 'nitions/common"},{"description":"round corner cube prism specific prop'
      + 'erties","type":"object","properties":{"diameter":{"description":"diame'
      + 'ter in meters","type":"number","minimum":0,"exclusiveMinimum":true},"o'
      + 'ffset":{"description":"offset in meters, e.g. reflector constant '
      + '(optional)","type":"number"},"shape":{"description":"shape identifier"'
      + ',"type":"string","enum":["round_corner_cube_prism"]}},"required":["sha'
      + 'pe","diameter"]}]}},"properties":{"types":{"type":"array","items":{"ty'
      + 'pe":"object","oneOf":[{"$ref":"#/definitions/rectangle"},{"$ref":"#/de'
      + 'finitions/checkerboard2x2"},{"$ref":"#/definitions/chevron"},{"$ref":"'
      + '#/definitions/circular_disk"},{"$ref":"#/definitions/cylinder"},{"$ref'
      + '":"#/definitions/sphere"},{"$ref":"#/definitions/round_corner_cube_pri'
      + 'sm"}]},"uniqueItems":true}}}'
    );

    Example : (''
      + '{"comments":["This file contains a list of control object types (aka. '
      + '''catalog'').","Each type is described by an object,","which must '
      + 'contain at least the following parameters:","  - name: unique '
      + 'identifier of the type","  - shape: one of the following supported '
      + 'shapes:","      - rectangle","      - checkerboard2x2","      - '
      + 'chevron","      - circular_disk","      - cylinder","      - sphere","'
      + '      - round_corner_cube_prism","Depending on ''shape'', the following '
      + 'parameters must/may be specified:","  - rectangle:","      - length: '
      + 'length in meters","      - width: width in meters","  - '
      + 'checkerboard2x2:","      - square_length: length of a square of the '
      + 'checkerboard in meters","  - circular_disk:","      - diameter: '
      + 'diameter in meters","      - offset: offset in meters, e.g. reflector '
      + 'constant (optional)","  - chevron:","      - outside_edge_length: '
      + 'length of the two outer edges in meters","      - thickness: thickness'
      + ' in meters","  - cylinder:","      - diameter: diameter in meters","'
      + '      - height: height in meters","  - sphere:","      - diameter: '
      + 'diameter in meters","  - round_corner_cube_prism:","      - diameter: '
      + 'diameter in meters","      - offset: offset in meters, e.g. reflector '
      + 'constant (optional)","Optional parameters:","    - description: string'
      + ' describing the object","    - surface_type: surface material type '
      + '(either ''retro_reflective_foil'' or '
      + '''diffuse'')"],"types":[{"name":"Rectangle '
      + '60x30","description":"Rectangle (60cm x 30cm)","shape":"rectangle","wi'
      + 'dth":0.3,"length":0.6},{"name":"Rectangle '
      + '80x40","description":"Rectangle (80cm x 40cm)","shape":"rectangle","wi'
      + 'dth":0.4,"length":0.8},{"name":"Checkerboard2x2 '
      + '30","description":"Checkerboard (square length: 30cm)","shape":"checke'
      + 'rboard2x2","square_length":0.3},{"name":"Checkerboard2x2 '
      + '50","description":"Checkerboard (square length: '
      + '50cm)","shape":"checkerboard2x2","square_length":0.5},{"name":"Chevron'
      + ' 24''''/4''''","description":"Chevron (a=24''''; b=4'''')","shape":"chevron","'
      + 'outside_edge_length":0.6096,"thickness":0.1016},{"name":"Circular Disk'
      + ' 50","description":" Circular Disk (diameter: 50cm)","diameter":0.5,"s'
      + 'hape":"circular_disk","surface_type":"diffuse"},{"description":"flat '
      + 'circular reflector from retro-reflective foil","offset":0.0,"surface_t'
      + 'ype":"retro_reflective_foil","name":"RIEGL flat reflector 50 '
      + 'mm","shape":"circular_disk","diameter":0.05},{"description":"flat '
      + 'circular reflector from retro-reflective foil","offset":0.0,"surface_t'
      + 'ype":"retro_reflective_foil","name":"RIEGL flat reflector 100 '
      + 'mm","shape":"circular_disk","diameter":0.1},{"description":"flat '
      + 'circular reflector from retro-reflective foil","offset":0.0,"surface_t'
      + 'ype":"retro_reflective_foil","name":"RIEGL flat reflector 150 mm","sha'
      + 'pe":"circular_disk","diameter":0.15},{"description":"cylindrical '
      + 'reflector from retro-reflective foil","height":0.05,"surface_type":"re'
      + 'tro_reflective_foil","name":"RIEGL cylindrical reflector 50 '
      + 'mm","shape":"cylinder","diameter":0.05},{"description":"cylindrical '
      + 'reflector from retro-reflective foil","height":0.1,"surface_type":"ret'
      + 'ro_reflective_foil","name":"RIEGL cylindrical reflector 100 '
      + 'mm","shape":"cylinder","diameter":0.1},{"name":"Sphere 200 '
      + 'mm","description":"Sphere (diameter: 200 '
      + 'mm)","diameter":0.2,"shape":"sphere"},{"name":"Corner Cube Prism 50 '
      + 'mm","description":"round corner cube prism","diameter":0.05,"shape":"r'
      + 'ound_corner_cube_prism","offset":0.0}]}'
    );
  );

// Details about the control object reference file
const
  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.control_object_reference_file';
    Title       : 'Control Object Reference file';
    Description : 'Details about the control object reference file';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the control object reference file","type'
      + '":"object","$schema":"http://json-schema.org/draft-04/schema#","proper'
      + 'ties":{"reference_file":{"type":"object","description":"Reference to a'
      + ' control object '
      + 'file","properties":{"file_uuid":{"description":"Control object file''s '
      + 'Universally Unique Identifier (RFC '
      + '4122)","type":"string"},"file_path":{"description":"Path of the '
      + 'control object file relative to referring file","type":"string"}},"req'
      + 'uired":["file_uuid","file_path"]}},"title":"Control Object Reference '
      + 'file"}'
    );

    Example : (''
      + '{"reference_file":{"file_uuid":"810f5d57-eccf-49ed-b07a-0cdd109b4213",'
      + '"file_path":"../../../10_CONTROL_OBJECTS/ControlPoints.cpx"}}'
    );
  );

// Detection probability as a function of amplitude
const
  RDB_RIEGL_DETECTION_PROBABILITY : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.detection_probability';
    Title       : 'Detection Probability';
    Description : 'Detection probability as a function of amplitude';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Detection probability as a function of amplitude","typ'
      + 'e":"object","$schema":"http://json-schema.org/draft-04/schema#","title'
      + '":"Detection Probability","required":["amplitude","detection_probabili'
      + 'ty"],"properties":{"amplitude":{"type":"array","description":"Amplitud'
      + 'e [dB]","items":{"type":"number"}},"detection_probability":{"type":"ar'
      + 'ray","description":"Detection probability '
      + '[0..1]","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"amplitude":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0],"detection'
      + '_probability":[0.0,0.5,0.8,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0]}'
    );
  );

// Details about the device used to acquire the point cloud
const
  RDB_RIEGL_DEVICE : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.device';
    Title       : 'Device Information';
    Description : 'Details about the device used to acquire the point cloud';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the device used to acquire the point clo'
      + 'ud","type":"object","$schema":"http://json-schema.org/draft-04/schema#'
      + '","title":"Device Information","required":["device_type","serial_numbe'
      + 'r"],"properties":{"channel_text":{"description":"Optional channel '
      + 'description (e.g. ''Green Channel'' for multi-channel '
      + 'devices)","type":"string"},"device_name":{"description":"Optional '
      + 'device name (e.g. ''Scanner 1'' for multi-scanner '
      + 'systems)","type":"string"},"device_build":{"description":"Device build'
      + ' variant","type":"string"},"device_type":{"description":"Device type '
      + 'identifier (e.g. '
      + 'VZ-400i)","type":"string"},"serial_number":{"description":"Device '
      + 'serial number (e.g. '
      + 'S2221234)","type":"string"},"channel_number":{"description":"Laser '
      + 'channel number (not defined or 0: single channel '
      + 'device)","type":"integer","minimum":0,"exclusiveMinimum":false}}}'
    );

    Example : (''
      + '{"channel_text":"","device_name":"Scanner 1","device_build":"","device'
      + '_type":"VZ-400i","serial_number":"S2221234","channel_number":0}'
    );
  );

// Scanner device geometry details
const
  RDB_RIEGL_DEVICE_GEOMETRY : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.device_geometry';
    Title       : 'Device Geometry';
    Description : 'Scanner device geometry details';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Scanner device geometry details","type":"object","$sch'
      + 'ema":"http://json-schema.org/draft-04/schema#","title":"Device Geometr'
      + 'y","required":["primary"],"properties":{"primary":{"description":"Prim'
      + 'ary device geometry structure (mandatory)","type":"object","properties'
      + '":{"content":{"description":"Internal calibration values","type":"arra'
      + 'y","items":{"type":"number"}},"ID":{"description":"Structure identifie'
      + 'r","type":"array","maxItems":2,"items":{"type":"integer"},"minItems":2'
      + '}},"required":["ID","content"]},"secondary":{"description":"Additional'
      + ' device geometry structure (optional)","type":"object","properties":{"'
      + 'content":{"description":"Internal calibration values","type":"array","'
      + 'items":{"type":"number"}},"ID":{"description":"Structure identifier","'
      + 'type":"array","maxItems":2,"items":{"type":"integer"},"minItems":2}},"'
      + 'required":["ID","content"]},"amu":{"description":"Angle Measurement '
      + 'Unit","type":"object","properties":{"frameCC":{"description":"Frame '
      + 'Circle Count (number of LSBs per full rotation about frame axis)","typ'
      + 'e":"number","minimum":0,"exclusiveMinimum":false},"lineCC":{"descripti'
      + 'on":"Line Circle Count (number of LSBs per full rotation about line '
      + 'axis)","type":"number","minimum":0,"exclusiveMinimum":false}}}}}'
    );

    Example : (''
      + '{"primary":{"content":[0],"ID":[4,0]},"secondary":{"content":[0],"ID":'
      + '[91,0]},"amu":{"frameCC":124000,"lineCC":124000}}'
    );
  );

// Scanner passive channel device geometry details
const
  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.device_geometry_passive_channel';
    Title       : 'Device Geometry Passive Channel';
    Description : 'Scanner passive channel device geometry details';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Scanner passive channel device geometry details","type'
      + '":"object","$schema":"http://json-schema.org/draft-04/schema#","title"'
      + ':"Device Geometry Passive Channel","required":["primary"],"properties"'
      + ':{"primary":{"description":"Primary device geometry structure (mandato'
      + 'ry)","type":"object","properties":{"content":{"description":"Internal '
      + 'calibration values","type":"array","items":{"type":"number"}},"ID":{"d'
      + 'escription":"Structure identifier","type":"array","maxItems":2,"items"'
      + ':{"type":"integer"},"minItems":2}},"required":["ID","content"]}}}'
    );

    Example : (''
      + '{"primary":{"content":[0],"ID":[143,0]}}'
    );
  );

// Limits of the measured values output by the device
const
  RDB_RIEGL_DEVICE_OUTPUT_LIMITS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.device_output_limits';
    Title       : 'Device Output Limits';
    Description : 'Limits of the measured values output by the device';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Limits of the measured values output by the device. '
      + 'The limits depend on the device type, measurement program and/or scan '
      + 'pattern.","type":"object","$schema":"http://json-schema.org/draft-04/s'
      + 'chema#","properties":{"amplitude_minimum":{"type":"number","descriptio'
      + 'n":"Minimum possible amplitude in '
      + 'dB."},"amplitude_maximum":{"type":"number","description":"Maximum '
      + 'possible amplitude in dB."},"background_radiation_minimum":{"type":"nu'
      + 'mber","description":"Minimum possible background radiation."},"deviati'
      + 'on_minimum":{"type":"number","description":"Minimum possible pulse '
      + 'shape deviation."},"mta_zone_count_maximum":{"type":"number","descript'
      + 'ion":"Maximum number of MTA '
      + 'zones."},"range_minimum":{"type":"number","description":"Minimum '
      + 'possible range in '
      + 'meters."},"range_maximum":{"type":"number","description":"Maximum '
      + 'possible range in meters."},"background_radiation_maximum":{"type":"nu'
      + 'mber","description":"Maximum possible background radiation."},"echo_co'
      + 'unt_maximum":{"type":"number","description":"Maximum number of echoes '
      + 'a laser shot can '
      + 'have."},"reflectance_maximum":{"type":"number","description":"Maximum '
      + 'possible reflectance in '
      + 'dB."},"reflectance_minimum":{"type":"number","description":"Minimum '
      + 'possible reflectance in '
      + 'dB."},"deviation_maximum":{"type":"number","description":"Maximum '
      + 'possible pulse shape deviation."}},"title":"Device Output Limits"}'
    );

    Example : (''
      + '{"background_radiation_minimum":0,"amplitude_minimum":0.0,"background_'
      + 'radiation_maximum":0,"deviation_minimum":-1,"mta_zone_count_maximum":7'
      + ',"reflectance_minimum":-100.0,"reflectance_maximum":100.0,"amplitude_m'
      + 'aximum":100.0,"range_minimum":2.9,"range_maximum":10000.0,"deviation_m'
      + 'aximum":32767}'
    );
  );

// Details about the devices used to acquire the point cloud
const
  RDB_RIEGL_DEVICES : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.devices';
    Title       : 'Devices Information';
    Description : 'Details about the devices used to acquire the point cloud';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the devices used to acquire the point '
      + 'cloud (e.g. when merging point clouds of different devices)","type":"a'
      + 'rray","$schema":"http://json-schema.org/draft-04/schema#","items":{"ty'
      + 'pe":"object","required":["device_type","serial_number"],"properties":{'
      + '"channel_text":{"description":"Optional channel description (e.g. '
      + '''Green Channel'' for multi-channel '
      + 'devices)","type":"string"},"signed":{"description":"Flag that is set '
      + 'when the original ''riegl.device'' entry in the source file was '
      + 'correctly '
      + 'signed.","type":"boolean"},"device_name":{"description":"Optional '
      + 'device name (e.g. ''Scanner 1'' for multi-scanner '
      + 'systems)","type":"string"},"device_build":{"description":"Device build'
      + ' variant","type":"string"},"device_type":{"description":"Device type '
      + 'identifier (e.g. '
      + 'VZ-400i)","type":"string"},"serial_number":{"description":"Device '
      + 'serial number (e.g. '
      + 'S2221234)","type":"string"},"channel_number":{"description":"Laser '
      + 'channel number (not defined or 0: single channel device)","type":"inte'
      + 'ger","minimum":0,"exclusiveMinimum":false}}},"title":"Devices '
      + 'Information"}'
    );

    Example : (''
      + '[{"channel_text":"","signed":false,"device_name":"Scanner 1","device_b'
      + 'uild":"","device_type":"VZ-400i","serial_number":"S2221234","channel_n'
      + 'umber":0},{"channel_text":"","signed":true,"device_name":"Scanner 2","'
      + 'device_build":"","device_type":"VQ-1560i-DW","serial_number":"S2222680'
      + '","channel_number":1},{"channel_text":"","signed":true,"device_name":"'
      + 'Scanner 3","device_build":"","device_type":"VQ-1560i-DW","serial_numbe'
      + 'r":"S2222680","channel_number":2}]'
    );
  );

// Distance measuring instrument configuration
const
  RDB_RIEGL_DMI_CONFIG : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.dmi_config';
    Title       : 'DMI Configuration';
    Description : 'Distance measuring instrument configuration';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Distance measuring instrument configuration","type":"o'
      + 'bject","$schema":"http://json-schema.org/draft-04/schema#","title":"DM'
      + 'I Configuration","required":["dmi_count_dir","dmi_incr","dmi_min_time"'
      + ',"dmi_max_time","dmi_dist_per_tick"],"properties":{"dmi_max_time":{"de'
      + 'scription":"Maximum time interval between trigger events, 0 means '
      + 'timeout is inactive [0.1 msec]","type":"integer","maximum":65535,"excl'
      + 'usiveMinimum":false,"minimum":0,"exclusiveMaximum":false},"dmi_min_tim'
      + 'e":{"description":"Minimum time interval between trigger events, 0 '
      + 'means rate limitation is inactive [0.1 msec]","type":"integer","maximu'
      + 'm":65535,"exclusiveMinimum":false,"minimum":0,"exclusiveMaximum":false'
      + '},"dmi_count_dir":{"description":"DMI count direction is inverted","ty'
      + 'pe":"integer","maximum":1,"exclusiveMinimum":false,"minimum":0,"exclus'
      + 'iveMaximum":false},"dmi_dist_per_tick":{"description":"Distance per '
      + 'tick, just informative '
      + '[m]","type":"number"},"dmi_incr":{"description":"Increment in ticks, 0'
      + ' means distance trigger is deactivated","type":"integer","maximum":214'
      + '7483647,"exclusiveMinimum":false,"minimum":0,"exclusiveMaximum":false}'
      + '}}'
    );

    Example : (''
      + '{"dmi_max_time":100,"dmi_min_time":0,"dmi_count_dir":0,"dmi_dist_per_t'
      + 'ick":0.00024399999529123306,"dmi_incr":0}'
    );
  );

// Dyntrig
const
  RDB_RIEGL_DYNTRIG : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.dyntrig';
    Title       : 'Dyntrig';
    Description : 'Dyntrig';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Dyntrig","$schema":"http://json-schema.org/draft-04/sc'
      + 'hema#","properties":{"scale":{"type":"number","description":"Scale in '
      + 'units of dB, for calculation of line: line number N=(amplitude-offset)'
      + '/scale"},"offset":{"type":"number","description":"Offset in units of '
      + 'dB, for calculation of '
      + 'line"},"pre":{"type":"object","description":"Dyntrig pre values","prop'
      + 'erties":{"a":{"type":"array","minItems":1,"description":"...","items":'
      + '{"type":"number"},"maxItems":2080},"nc":{"type":"integer","description'
      + '":"Number of entries","maximum":255,"minimum":0}},"required":["nc","a"'
      + ']},"post":{"type":"object","description":"Dyntrig post values","proper'
      + 'ties":{"a":{"type":"array","minItems":1,"description":"...","items":{"'
      + 'type":"number"},"maxItems":2080},"nc":{"type":"integer","description":'
      + '"Number of entries","maximum":255,"minimum":0}},"required":["nc","a"]}'
      + ',"tab":{"type":"array","minItems":1,"description":"...","items":{"desc'
      + 'ription":"...","type":"object","properties":{"del2":{"description":"Le'
      + 'ngth of constant pre-trigger threshold elevation in units of '
      + 'm","type":"number"},"thra2":{"description":"Pre-trigger threshold in '
      + 'units of dB","type":"number"},"thra1":{"description":"Post-trigger '
      + 'threshold in units of '
      + 'dB","type":"number"},"del1":{"description":"Length of constant '
      + 'post-trigger threshold elevation in units of '
      + 'm","type":"number"},"dec2":{"description":"Rise of pre-trigger '
      + 'threshold after del2 in units of '
      + 'dB/m","type":"number"},"dec1":{"description":"Decay of post-trigger '
      + 'threshold after del1 in units of dB/m","type":"number"}},"required":["'
      + 'thra1","del1","dec1","thra2","del2","dec2"]},"maxItems":128}},"title":'
      + '"Dyntrig"}'
    );

    Example : (''
      + '{"scale":1.0,"offset":0.0,"pre":{"a":[78,86,126,134,31],"nc":128},"pos'
      + 't":{"a":[78,86,126,134,31],"nc":128},"tab":[{"del2":0.0,"thra2":0.0,"t'
      + 'hra1":0.0,"del1":0.0,"dec2":0.0,"dec1":0.0}]}'
    );
  );

// Details about echo files
const
  RDB_RIEGL_ECHO_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.echo_info';
    Title       : 'Echo Information';
    Description : 'Details about echo files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about echo files","type":"object","$schema":"h'
      + 'ttp://json-schema.org/draft-04/schema#","title":"Echo Information","re'
      + 'quired":["echo_file"],"properties":{"echo_file":{"type":"object","requ'
      + 'ired":["file_extension"],"properties":{"file_extension":{"description"'
      + ':"Echo file extension, without the leading '
      + 'dot","type":"string"},"file_uuid":{"description":"File''s Universally '
      + 'Unique Identifier (RFC 4122)","type":"string"}}}}}'
    );

    Example : (''
      + '{"echo_file":{"file_extension":"owp","file_uuid":"26a03615-67c0-4bea-8'
      + 'fe8-c577378fe661"}}'
    );
  );

// Details for exponential decomposition of full waveform data
const
  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.exponential_decomposition';
    Title       : 'Exponential Decomposition';
    Description : 'Details for exponential decomposition of full waveform data';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details for exponential decomposition of full waveform'
      + ' data","type":"object","$schema":"http://json-schema.org/draft-04/sche'
      + 'ma#","title":"Exponential Decomposition","definitions":{"channel":{"ty'
      + 'pe":"object","required":["delay","scale","parameter"],"properties":{"s'
      + 'cale":{"description":"amplitude '
      + 'calibration","type":"number"},"delay":{"description":"delay '
      + 'calibration in '
      + 'seconds","type":"number"},"parameter":{"description":"parameters of '
      + 'the syswave exponential '
      + 'sum","type":"object","properties":{"B":{"description":"imaginary part '
      + 'of amplitude factor in units of full-scale","type":"array","items":{"t'
      + 'ype":"number"}},"gamma":{"description":"decay in 1/second","type":"arr'
      + 'ay","items":{"type":"number"}},"A":{"description":"real part of '
      + 'amplitude factor in units of full-scale","type":"array","items":{"type'
      + '":"number"}},"omega":{"description":"angular frequency in Hz","type":"'
      + 'array","items":{"type":"number"}}},"required":["A","B","gamma","omega"'
      + ']},"a_lin":{"description":"relative linear amplitude range [0..1]","ty'
      + 'pe":"number","maximum":1,"exclusiveMinimum":false,"minimum":0,"exclusi'
      + 'veMaximum":false}}}},"additionalProperties":false,"patternProperties":'
      + '{"^[0-9]+$":{"description":"one field per channel, field name is '
      + 'channel index","$ref":"#/definitions/channel"}}}'
    );

    Example : (''
      + '{"1":{"scale":1.0,"delay":3.5e-09,"parameter":{"B":[-3.9,0.0,-0.3],"ga'
      + 'mma":[-1094726528.0,-769562752.0,-848000064.0],"A":[0.9,0.3,-1.3],"ome'
      + 'ga":[352020896.0,3647927552.0,-1977987072.0]},"a_lin":0.9},"0":{"scale'
      + '":1.0,"delay":3.783458418887631e-09,"parameter":{"B":[-3.9813032150268'
      + '555,0.08622030913829803,-0.3152860999107361],"gamma":[-1094726528.0,-7'
      + '69562752.0,-848000064.0],"A":[0.9772450923919678,0.3354335129261017,-1'
      + '.312678575515747],"omega":[352020896.0,3647927552.0,-1977987072.0]},"a'
      + '_lin":0.27}}'
    );
  );

// Details for Gaussian decomposition of full waveform data
const
  RDB_RIEGL_GAUSSIAN_DECOMPOSITION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.gaussian_decomposition';
    Title       : 'Gaussian Decomposition';
    Description : 'Details for Gaussian decomposition of full waveform data';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"riegl.gaussian_decomposition contains information '
      + 'relevant for extracting calibrated amplitudes and calibrated ranges '
      + 'from a Gaussian decomposition of full waveform data. This information '
      + 'is contained in a table with five columns. Two columns are to be used '
      + 'as input: amplitude_lsb_low_power and amplitude_lsb_high_power. The '
      + 'other three columns provide the outputs. Amplitude_db gives the '
      + 'calibrated amplitude in the optical regime in decibels. The range '
      + 'offset columns provide additive range offsets, given in units of '
      + 'seconds, for each channel.","type":"object","$schema":"http://json-sch'
      + 'ema.org/draft-04/schema#","title":"Gaussian Decomposition","required":'
      + '["amplitude_lsb_low_power","amplitude_lsb_high_power","amplitude_db","'
      + 'range_offset_sec_low_power","range_offset_sec_high_power"],"properties'
      + '":{"range_offset_sec_low_power":{"type":"array","items":{"type":"numbe'
      + 'r"}},"amplitude_db":{"type":"array","items":{"type":"number"}},"amplit'
      + 'ude_lsb_high_power":{"type":"array","items":{"type":"number"}},"range_'
      + 'offset_sec_high_power":{"type":"array","items":{"type":"number"}},"amp'
      + 'litude_lsb_low_power":{"type":"array","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"range_offset_sec_low_power":[],"amplitude_db":[],"amplitude_lsb_high'
      + '_power":[],"range_offset_sec_high_power":[],"amplitude_lsb_low_power":'
      + '[]}'
    );
  );

// Point cloud georeferencing information
const
  RDB_RIEGL_GEO_TAG : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.geo_tag';
    Title       : 'Geo Tag';
    Description : 'Point cloud georeferencing information';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Point cloud georeferencing information","type":"object'
      + '","$schema":"http://json-schema.org/draft-04/schema#","properties":{"p'
      + 'ose":{"type":"array","description":"Coordinate Transformation Matrix '
      + 'to transform from File Coordinate System to Global Coordinate '
      + 'Reference System. 4x4 matrix stored as two dimensional array, row '
      + 'major order.","minItems":4,"items":{"description":"rows","type":"array'
      + '","minItems":4,"items":{"description":"columns","type":"number"},"maxI'
      + 'tems":4},"maxItems":4},"crs":{"type":"object","description":"Global '
      + 'Coordinate Reference System. Please note that only 3D Cartesian '
      + 'Coordinate Systems are '
      + 'allowed.","properties":{"name":{"description":"Coordinate reference '
      + 'system name","type":"string"},"epsg":{"description":"EPSG '
      + 'code","type":"integer","minimum":0},"wkt":{"description":"\"Well-Known'
      + ' Text\" string, OGC WKT dialect (see http://www.opengeospatial.org/sta'
      + 'ndards/wkt-crs)","type":"string"}}}},"title":"Geo Tag"}'
    );

    Example : (''
      + '{"pose":[[-0.269827776749716,-0.723017716139738,0.635954678449952,4063'
      + '882.500831],[0.962908599449764,-0.20260517250352,0.178208229833847,113'
      + '8787.607461],[0.0,0.660451759194338,0.7508684796801,4766084.550196],[0'
      + '.0,0.0,0.0,1.0]],"crs":{"name":"WGS84 '
      + 'Geocentric","epsg":4978,"wkt":"GEOCCS[\"WGS84 Geocentric\",DATUM[\"WGS'
      + '84\",SPHEROID[\"WGS84\",6378137.000,298.257223563,AUTHORITY[\"EPSG\",\'
      + '"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0.0000000'
      + '000000000,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"Meter\",1.0000000000000'
      + '0000000,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",OTHER],AXIS[\"Y\",EAS'
      + 'T],AXIS[\"Z\",NORTH],AUTHORITY[\"EPSG\",\"4978\"]]"}}'
    );
  );

// Geometric scale factor applied to point coordinates
const
  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.geometric_scale_factor';
    Title       : 'Geometric Scale Factor';
    Description : 'Geometric scale factor applied to point coordinates';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Geometric scale factor applied to point coordinates","'
      + 'type":"number","$schema":"http://json-schema.org/draft-04/schema#","mi'
      + 'nimum":0,"exclusiveMinimum":true}'
    );

    Example : (''
      + '1.0'
    );
  );

// Parameters used for georeferencing of the point cloud
const
  RDB_RIEGL_GEOREFERENCING_PARAMETERS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.georeferencing_parameters';
    Title       : 'Georeferencing Parameters';
    Description : 'Parameters used for georeferencing of the point cloud';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Parameters used for georeferencing of the point cloud"'
      + ',"type":"object","$schema":"http://json-schema.org/draft-04/schema#","'
      + 'properties":{"trajectory_file":{"type":"object","description":"Traject'
      + 'ory data used for georeferencing of the point '
      + 'cloud","properties":{"file_extension":{"description":"Trajectory file '
      + 'extension, without the leading '
      + 'dot","type":"string"},"file_uuid":{"description":"File''s Universally '
      + 'Unique Identifier (RFC 4122)","type":"string"}},"required":["file_exte'
      + 'nsion"]},"socs_to_body_matrix":{"type":"array","description":"Coordina'
      + 'te Transformation Matrix to transform from Scanner''s Own Coordinate '
      + 'System to Body Coordinate System. 4x4 matrix stored as two dimensional'
      + ' array, row major order.","minItems":4,"items":{"description":"rows","'
      + 'type":"array","minItems":4,"items":{"description":"columns","type":"nu'
      + 'mber"},"maxItems":4},"maxItems":4},"socs_to_rocs_matrix":{"type":"arra'
      + 'y","description":"Coordinate Transformation Matrix to transform from '
      + 'Scanner''s Own Coordinate System to Record Coordinate System. 4x4 '
      + 'matrix stored as two dimensional array, row major order.","minItems":4'
      + ',"items":{"description":"rows","type":"array","minItems":4,"items":{"d'
      + 'escription":"columns","type":"number"},"maxItems":4},"maxItems":4},"bo'
      + 'dy_coordinate_system_type":{"type":"string","description":"BODY '
      + 'coordinate frame (NED: North-East-Down, ENU: East-North-Up), default: '
      + 'NED","enum":["NED","ENU"]},"trajectory_offsets":{"type":"object","desc'
      + 'ription":"Correction offsets applied to the trajectory data","properti'
      + 'es":{"offset_north":{"type":"number","description":"[m]"},"offset_roll'
      + '":{"type":"number","description":"[deg]"},"offset_pitch":{"type":"numb'
      + 'er","description":"[deg]"},"offset_height":{"type":"number","descripti'
      + 'on":"[m]"},"offset_time":{"type":"number","description":"[s]"},"offset'
      + '_east":{"type":"number","description":"[m]"},"version":{"type":"intege'
      + 'r","description":"Meaning of offset values and how to apply them; '
      + 'version 0: '
      + 'Rz(yaw+offset_yaw)*Ry(pitch+offset_pitch)*Rx(roll+offset_roll), '
      + 'version 1: Rz(yaw)*Ry(pitch)*Rx(roll) * Rz(offset_yaw)*Ry(offset_pitch'
      + ')*Rx(offset_roll)"},"offset_yaw":{"type":"number","description":"[deg]'
      + '"}}}},"title":"Georeferencing Parameters"}'
    );

    Example : (''
      + '{"trajectory_file":{"file_extension":"pofx","file_uuid":"93a03615-66c0'
      + '-4bea-8ff8-c577378fe660"},"socs_to_body_matrix":[[-0.269827776749716,-'
      + '0.723017716139738,0.635954678449952,0.0],[0.962908599449764,-0.2026051'
      + '7250352,0.178208229833847,0.0],[0.0,0.660451759194338,0.7508684796801,'
      + '0.0],[0.0,0.0,0.0,1.0]],"body_coordinate_system_type":"NED","trajector'
      + 'y_offsets":{"offset_north":0.07,"offset_roll":0.03,"offset_pitch":0.01'
      + ',"offset_height":-0.2,"offset_time":18.007,"offset_east":0.15,"version'
      + '":0,"offset_yaw":-0.45}}'
    );
  );

// Details about GNSS processing
const
  RDB_RIEGL_GNSS_PROCESSING_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.gnss_processing_info';
    Title       : 'GNSS Processing Information';
    Description : 'Details about GNSS processing';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about GNSS processing","type":"object","$schem'
      + 'a":"http://json-schema.org/draft-04/schema#","properties":{"base_stati'
      + 'ons":{"description":"List of GNSS base '
      + 'stations","type":"array","items":{"description":"GNSS base station det'
      + 'ails","type":"object","properties":{"longitude":{"description":"Longit'
      + 'ude [deg]","type":"number"},"altitude":{"description":"Altitude '
      + '[m]","type":"number"},"latitude":{"description":"Latitude [deg]","type'
      + '":"number"}},"required":["latitude","longitude","altitude"]}}},"title"'
      + ':"GNSS Processing Information"}'
    );

    Example : (''
      + '{"base_stations":[{"longitude":15.663389822,"altitude":379.80041503906'
      + '25,"latitude":48.658391162}]}'
    );
  );

// Imported control object text files
const
  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.imported_control_objects';
    Title       : 'Imported Control Objects';
    Description : 'Imported control object text files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Imported control object text files","type":"object","$'
      + 'schema":"http://json-schema.org/draft-04/schema#","title":"riegl.impor'
      + 'ted_control_objects","required":["control_objects","imported_files"],"'
      + 'properties":{"control_objects":{"type":"object","description":"One '
      + '(optional) field per control object, field name is control object id",'
      + '"patternProperties":{"^[0-9]+$":{"type":"object","required":["file","l'
      + 'ine_start","line_count"],"properties":{"file":{"type":"integer","descr'
      + 'iption":"Index (0-based) of the file in the ''imported_files'' '
      + 'array"},"line_count":{"type":"integer","description":"Number of lines '
      + 'used to import this '
      + 'object"},"line_start":{"type":"integer","description":"Index (0-based)'
      + ' of the first line used from the ''lines'' '
      + 'array"}}}}},"imported_files":{"type":"array","description":"Array of '
      + 'imported files","items":{"type":"object","required":["path","lines"],"'
      + 'properties":{"lines":{"type":"array","description":"Each entry in this'
      + ' array is a line (string) from the text file","items":{"type":"string"'
      + '}},"path":{"type":"string","description":"Path of the text file"}}}}}}'
    );

    Example : (''
      + '{"control_objects":{"1":{"file":0,"line_count":1,"line_start":1},"2":{'
      + '"file":0,"line_count":1,"line_start":2}},"imported_files":[{"lines":["'
      + 'Name,X [m],Y [m],Z '
      + '[m]","TPL1,799.7932,-19.9762,356.3410,0.000,0.000,2000-01-01,Control '
      + 'Object,Checker Horz 30 white,0.000 (\u00b1180.000),0.000 (\u00b1180.00'
      + '0),0.000,0.000","TPL2,305.6387,121.0023,375.2755,0.000,0.000,2000-01-0'
      + '1,Control Object,Checker Horz 30 white,0.000 (\u00b1180.000),0.000 (\u'
      + '00b1180.000),0.000,0.000","TPL3,311.1808,143.9655,376.1465,0.000,0.000'
      + ',2000-01-01,Control Object,Checker Horz 30 white,0.000 '
      + '(\u00b1180.000),0.000 (\u00b1180.000),0.000,0.000","TPL4,233.3328,146.'
      + '3850,376.3992,0.000,0.000,2000-01-01,Control Object,Checker Horz 30 '
      + 'white,0.000 (\u00b1180.000),0.000 (\u00b1180.000),0.000,0.000","TPL5,8'
      + '8.8272,193.0782,377.6008,0.000,0.000,2000-01-01,Control Object,Checker'
      + ' Horz 30 white,0.000 (\u00b1180.000),0.000 (\u00b1180.000),0.000,0.000'
      + '","TPL6N,-103.8853,262.5560,376.5860,0.000,0.000,2000-01-01,Control '
      + 'Object,Checker Horz 30 white,0.000 (\u00b1180.000),0.000 (\u00b1180.00'
      + '0),0.000,0.000","TPL6S,-103.9598,262.3373,376.5875,0.000,0.000,2000-01'
      + '-01,Control Object,Checker Horz 30 white,0.000 (\u00b1180.000),0.000 ('
      + '\u00b1180.000),0.000,0.000","TPL7,-467.2435,373.6745,376.6268,0.000,0.'
      + '000,2000-01-01,Control Object,Rail profile RIEGL UIC60,0.000 '
      + '(\u00b1180.000),0.000 '
      + '(\u00b1180.000),0.000,0.000"],"path":"PRCS.csv"},{"lines":["# '
      + 'Comment","# Comment","TPL1;48.661658680990;15.653506434875;356.3976","'
      + 'TPL2;48.662926800502;15.646798874450;375.2903","TPL3;48.663133282889;1'
      + '5.646874117656;376.1622","# Comment","TPL4;48.663155073562;15.64581738'
      + '3282;376.4115","TPL5;48.663574975585;15.643855822574;377.6106","TPL6N;'
      + '48.664199718144;15.641239835849;376.5986","TPL6S;48.664197751809;15.64'
      + '1238823565;376.6001","TPL7;48.665198732983;15.636307251490;376.6612"],'
      + '"path":"TPL_Points_ETRS89_LLA.txt"}]}'
    );
  );

// Map of item names
const
  RDB_RIEGL_ITEM_NAMES : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.item_names';
    Title       : 'Item Names';
    Description : 'Map of item names';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Map of item names","type":"object","$schema":"http://j'
      + 'son-schema.org/draft-04/schema#","title":"Item Names","additionalPrope'
      + 'rties":false,"patternProperties":{"^-?[0-9]+$":{"description":"One '
      + 'field per item, field name is item id, field value is item '
      + 'name","type":"string"}}}'
    );

    Example : (''
      + '{"1":"Name of item with id 1","47":"Name of item with id 47","2":"Name'
      + ' of item with id 2","-1":"Name of item with id -1"}'
    );
  );

// Lag angle depended range and reflectance correction
const
  RDB_RIEGL_LAG_ANGLE_CORRECTION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.lag_angle_correction';
    Title       : 'Lag Angle Correction';
    Description : 'Lag angle depended range and reflectance correction';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Lag angle depended range and reflectance correction","'
      + 'type":"object","$schema":"http://json-schema.org/draft-04/schema#","ti'
      + 'tle":"Lag Angle Correction","required":["ranges_m","range_correction_m'
      + '","reflectance_correction_db"],"properties":{"reflectance_correction_d'
      + 'b":{"type":"array","description":"Reflectance correction [db] as a '
      + 'function of the range and for applied scanrate","items":{"type":"numbe'
      + 'r"}},"range_correction_m":{"type":"array","description":"Range '
      + 'correction [m] as a function of the range and for applied scanrate, '
      + 'which defines the lag angle","items":{"type":"number"}},"ranges_m":{"t'
      + 'ype":"array","description":"Range [m]","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"reflectance_correction_db":[0.0,0.0,0.16,0.46,1.18,2.97,2.97],"range'
      + '_correction_m":[0.0,0.0,0.0004,0.0023,0.0039,0.0053,0.0053],"ranges_m"'
      + ':[0.0,4.795,31.964,63.928,95.892,127.856,10000.0]}'
    );
  );

// License keys for software features
const
  RDB_RIEGL_LICENSES : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.licenses';
    Title       : 'Software License Keys';
    Description : 'License keys for software features';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"License keys for software features","type":"object","$'
      + 'schema":"http://json-schema.org/draft-04/schema#","title":"Software '
      + 'License Keys","additionalProperties":false,"patternProperties":{"^.*$"'
      + ':{"description":"Each field of the object represents a feature and '
      + 'holds a list of license keys, where the field name is the feature '
      + 'name.","type":"array","items":{"description":"License key (example: '
      + '''46AE032A - 39882AC4 - 9EC0A184 - '
      + '6F163D73'')","type":"string"},"minItems":1}}}'
    );

    Example : (''
      + '{"Georeferencing":["46AE032A - 39882AC4 - 9EC0A184 - 6F163D73"],"Full '
      + 'Waveform Analysis Topography with GPU support":["8AB44126 - 23B92250 -'
      + ' 16E2689F - 34EF7E7B"],"MTA resolution":["468E020A - 39A922E4 - '
      + 'B681A184 - 673E3D72"],"Full Waveform Analysis Topography":["0FD5FF07 -'
      + ' 011A1255 - 9F76CACA - 8D2ED557"]}'
    );
  );

// Parameters for MTA processing
const
  RDB_RIEGL_MTA_SETTINGS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.mta_settings';
    Title       : 'MTA Settings';
    Description : 'Parameters for MTA processing';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Parameters for MTA processing","type":"object","$schem'
      + 'a":"http://json-schema.org/draft-04/schema#","properties":{"modulation'
      + '_depth":{"type":"number","description":"Depth of pulse position '
      + 'modulation in meter.","minimum":0},"zone_width":{"type":"number","desc'
      + 'ription":"Width of a MTA zone in meter.","minimum":0},"zone_count":{"t'
      + 'ype":"integer","description":"Maximum number of MTA '
      + 'zones.","maximum":255,"minimum":0}},"title":"MTA Settings"}'
    );

    Example : (''
      + '{"modulation_depth":9.368514,"zone_width":149.896225,"zone_count":23}'
    );
  );

// Lookup table for range correction based on raw range
const
  RDB_RIEGL_NEAR_RANGE_CORRECTION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.near_range_correction';
    Title       : 'Near Range Correction Table';
    Description : 'Lookup table for range correction based on raw range';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Lookup table for range correction based on raw range",'
      + '"type":"object","$schema":"http://json-schema.org/draft-04/schema#","t'
      + 'itle":"Near Range Correction Table","required":["delta","content"],"pr'
      + 'operties":{"delta":{"description":"Delta between table entries [m], '
      + 'first entry is at range = 0 '
      + 'm","type":"number"},"content":{"description":"Correction value [m] to '
      + 'be added to the raw range","type":"array","maxItems":2000,"items":{"ty'
      + 'pe":"number"},"minItems":1}}}'
    );

    Example : (''
      + '{"delta":0.512,"content":[0.0]}'
    );
  );

// Standard deviation for range and amplitude as a function of amplitude
const
  RDB_RIEGL_NOISE_ESTIMATES : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.noise_estimates';
    Title       : 'Noise Estimates';
    Description : 'Standard deviation for range and amplitude as a function of amplitude';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Standard deviation for range and amplitude as a '
      + 'function of amplitude","type":"object","$schema":"http://json-schema.o'
      + 'rg/draft-04/schema#","title":"Noise Estimates","required":["amplitude"'
      + ',"range_sigma","amplitude_sigma"],"properties":{"range_sigma":{"type":'
      + '"array","description":"Sigma range [m]","items":{"type":"number"}},"am'
      + 'plitude":{"type":"array","description":"Amplitude [dB]","items":{"type'
      + '":"number"}},"amplitude_sigma":{"type":"array","description":"Sigma '
      + 'amplitude [dB]","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"range_sigma":[0.065,0.056,0.046,0.038,0.032,0.027,0.024,0.021,0.018,'
      + '0.016,0.014],"amplitude":[0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0'
      + '],"amplitude_sigma":[0.988,0.988,0.875,0.774,0.686,0.608,0.54,0.482,0.'
      + '432,0.39,0.354]}'
    );
  );

// Notch filter parameters for window glass echoes
const
  RDB_RIEGL_NOTCH_FILTER : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.notch_filter';
    Title       : 'Notch Filter';
    Description : 'Notch filter parameters for window glass echoes';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Notch filter parameters for window glass echoes","type'
      + '":"object","$schema":"http://json-schema.org/draft-04/schema#","title"'
      + ':"Notch Filter","required":["range_minimum","range_maximum","amplitude'
      + '_maximum"],"properties":{"range_maximum":{"type":"number","description'
      + '":"Maximum range '
      + '[m]"},"amplitude_maximum":{"type":"number","description":"Maximum '
      + 'amplitude [dB]","minimum":0},"range_minimum":{"type":"number","descrip'
      + 'tion":"Minimum range [m]"}}}'
    );

    Example : (''
      + '{"range_maximum":0.2,"amplitude_maximum":18.0,"range_minimum":-0.5}'
    );
  );

// Details about the pixels contained in the file
const
  RDB_RIEGL_PIXEL_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.pixel_info';
    Title       : 'Pixel Information';
    Description : 'Details about the pixels contained in the file';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the pixels contained in the file","type"'
      + ':"object","$schema":"http://json-schema.org/draft-04/schema#","title":'
      + '"Pixel Information","required":["size"],"definitions":{"pixel_size":{"'
      + 'type":"array","description":"Size of '
      + 'pixels.","minItems":2,"items":{"type":"number","description":"Length '
      + 'of pixel edge [m].","minimum":0},"maxItems":2}},"properties":{"size":{'
      + '"description":"Size of pixels in file coordinate system.","$ref":"#/de'
      + 'finitions/pixel_size"},"size_llcs":{"description":"Size of pixels in a'
      + ' locally levelled cartesian coordinate system (xy). This is only used '
      + 'for pixels based on a map '
      + 'projection.","$ref":"#/definitions/pixel_size"}}}'
    );

    Example : (''
      + '{"size":[0.5971642834779395,0.5971642834779395],"size_llcs":[0.5156575'
      + '252891171,0.5130835356683303]}'
    );
  );

// Details about the plane patch matching process
const
  RDB_RIEGL_PLANE_PATCH_MATCHING : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.plane_patch_matching';
    Title       : 'Plane Patch Matching';
    Description : 'Details about the plane patch matching process';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the plane patch matching process","type"'
      + ':"object","$schema":"http://json-schema.org/draft-04/schema#","title":'
      + '"Plane Patch Matching","required":["plane_patch_file_one","plane_patch'
      + '_file_two"],"definitions":{"file_reference":{"type":"object","descript'
      + 'ion":"Reference to a plane patch '
      + 'file","properties":{"file_uuid":{"description":"Plane patch file''s '
      + 'Universally Unique Identifier (RFC '
      + '4122)","type":"string"},"file_path":{"description":"Path of the plane '
      + 'patch file relative to the match file","type":"string"}},"required":["'
      + 'file_uuid","file_path"]}},"properties":{"plane_patch_file_one":{"descr'
      + 'iption":"Reference to the plane patch file one","$ref":"#/definitions/'
      + 'file_reference"},"plane_patch_file_two":{"description":"Reference to '
      + 'the plane patch file two","$ref":"#/definitions/file_reference"}}}'
    );

    Example : (''
      + '{"plane_patch_file_one":{"file_uuid":"810f5d57-eccf-49ed-b07a-0cdd109b'
      + '4213","file_path":"Record009_Line001/191025_121410_Scanner_1.ptch"},"p'
      + 'lane_patch_file_two":{"file_uuid":"fa47d509-a64e-49ce-8b14-ff3130fbefa'
      + '9","file_path":"project.ptch"}}'
    );
  );

// Statistics about plane patches found by plane patch extractor
const
  RDB_RIEGL_PLANE_PATCH_STATISTICS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.plane_patch_statistics';
    Title       : 'Plane Patch Statistics';
    Description : 'Statistics about plane patches found by plane patch extractor';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Statistics about plane patches found by plane patch ex'
      + 'tractor","type":"object","$schema":"http://json-schema.org/draft-04/sc'
      + 'hema#","properties":{"total_area":{"type":"number","description":"sum '
      + 'of all plane patch areas [m\u00b2]"},"total_horizontal_area":{"type":"'
      + 'number","description":"sum of all plane patch areas projected to '
      + 'horizontal plane [m\u00b2]"}},"title":"Plane Patch Statistics"}'
    );

    Example : (''
      + '{"total_area":14007.965,"total_horizontal_area":13954.601}'
    );
  );

// Settings and classes for plane slope classification
const
  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.plane_slope_class_info';
    Title       : 'Plane Slope Class Info';
    Description : 'Settings and classes for plane slope classification';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Settings and classes for plane slope classification","'
      + 'type":"object","$schema":"http://json-schema.org/draft-04/schema#","ti'
      + 'tle":"Plane Slope Class Info","required":["settings","classes"],"defin'
      + 'itions":{"method-2":{"type":"object","description":"Classification '
      + 'method 2","properties":{"sloping_plane_classes_maximum_angle":{"type":'
      + '"number","description":"maximum inclination angle of sloping plane '
      + 'patches [deg]","maximum":360.0,"minimum":-360.0},"sloping_plane_classe'
      + 's_minimum_angle":{"type":"number","description":"minimum inclination '
      + 'angle of sloping plane patches [deg]","maximum":360.0,"minimum":-360.0'
      + '},"plane_classification_method":{"type":"integer","description":"metho'
      + 'd ID (=2)","maximum":2,"minimum":2}},"required":["plane_classification'
      + '_method","sloping_plane_classes_minimum_angle","sloping_plane_classes_'
      + 'maximum_angle"]},"method-1":{"type":"object","description":"Classifica'
      + 'tion method 1","properties":{"maximum_inclination_angle_horizontal":{"'
      + 'type":"number","description":"maximum inclination angle of horizontal '
      + 'plane patches [deg]","maximum":360.0,"minimum":-360.0},"plane_classifi'
      + 'cation_method":{"type":"integer","description":"method ID (=1)","maxim'
      + 'um":1,"minimum":1}},"required":["plane_classification_method","maximum'
      + '_inclination_angle_horizontal"]}},"properties":{"classes":{"type":"obj'
      + 'ect","description":"Class definition table","additionalProperties":fal'
      + 'se,"patternProperties":{"^[0-9]+$":{"description":"one field per '
      + 'class, field name is class number, field value is class name","type":"'
      + 'string"}}},"settings":{"type":"object","description":"Classification '
      + 'settings, details see documentation of rdbplanes","oneOf":[{"$ref":"#/'
      + 'definitions/method-1"},{"$ref":"#/definitions/method-2"}]}}}'
    );

    Example : (''
      + '{"classes":{"8":"vertical, pointing north","14":"horizontal, pointing '
      + 'down","4":"sloping, pointing up and north","13":"sloping, pointing '
      + 'down and west","5":"sloping, pointing up and west","11":"sloping, '
      + 'pointing down and south","9":"vertical, pointing west","12":"sloping, '
      + 'pointing down and north","7":"vertical, pointing south","6":"vertical,'
      + ' pointing east","1":"horizontal, pointing up","2":"sloping, pointing '
      + 'up and east","3":"sloping, pointing up and south","10":"sloping, '
      + 'pointing down and east"},"settings":{"sloping_plane_classes_maximum_an'
      + 'gle":70.0,"sloping_plane_classes_minimum_angle":10.0,"plane_classifica'
      + 'tion_method":2}}'
    );
  );

// Grouping and sorting of point attributes for visualization purposes
const
  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.point_attribute_groups';
    Title       : 'Point Attribute Groups';
    Description : 'Grouping and sorting of point attributes for visualization purposes';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Grouping and sorting of point attributes for '
      + 'visualization purposes","type":"object","$schema":"http://json-schema.'
      + 'org/draft-04/schema#","title":"Point Attribute Groups","additionalProp'
      + 'erties":false,"patternProperties":{"^.*$":{"description":"Each field '
      + 'of the object represents a point attribute group and holds a list of '
      + 'point attributes, where the field name is the group '
      + 'name.","type":"array","items":{"description":"Point attribute full '
      + 'name or name pattern (perl regular expression '
      + 'syntax)","type":"string"},"minItems":1}}}'
    );

    Example : (''
      + '{"Primary Attributes":["riegl.reflectance","riegl.amplitude","riegl.de'
      + 'viation"],"Other Attributes":["riegl.selected","riegl.visible"],"Coord'
      + 'inates/Vectors":["riegl.xyz","riegl.range","riegl.theta","riegl.phi"],'
      + '"Secondary Attributes":["riegl.mirror_facet","riegl.waveform_available'
      + '"],"Time":["riegl.timestamp"]}'
    );
  );

// Details about point cloud files
const
  RDB_RIEGL_POINTCLOUD_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.pointcloud_info';
    Title       : 'Point Cloud Information';
    Description : 'Details about point cloud files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about point cloud files","type":"object","$sch'
      + 'ema":"http://json-schema.org/draft-04/schema#","properties":{"field_of'
      + '_application":{"description":"Field of application","type":"string","e'
      + 'num":["unknown","SLS","TLS","KLS","MLS","ULS","ALS","BLS","ILS"]},"com'
      + 'ments":{"description":"Comments","type":"string"},"project":{"descript'
      + 'ion":"Project name","type":"string"}},"title":"Point Cloud '
      + 'Information"}'
    );

    Example : (''
      + '{"field_of_application":"ALS","comments":"Line 3","project":"Campaign '
      + '4"}'
    );
  );

// Estimated position and orientation information
const
  RDB_RIEGL_POSE_ESTIMATION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.pose_estimation';
    Title       : 'Pose Estimation';
    Description : 'Estimated position and orientation information';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Estimated position and orientation information as '
      + 'measured by GNSS, IMU or inclination sensors","type":"object","$schema'
      + '":"http://json-schema.org/draft-04/schema#","title":"Pose Estimation",'
      + '"required":["orientation"],"properties":{"position":{"description":"Po'
      + 'sition coordinates and position accuracy values as measured by GNSS in'
      + ' the specified Coordinate Reference System (CRS)","type":"object","pro'
      + 'perties":{"coordinate_1":{"description":"Coordinate 1 as defined by '
      + 'axis 1 of the specified CRS (e.g., X, '
      + 'Latitude)","type":"number"},"coordinate_2":{"description":"Coordinate '
      + '2 as defined by axis 2 of the specified CRS (e.g., Y, Longitude)","typ'
      + 'e":"number"},"vertical_accuracy":{"description":"Vertical accuracy [m]'
      + '","type":"number","minimum":0,"exclusiveMinimum":true},"coordinate_3":'
      + '{"description":"Coordinate 3 as defined by axis 3 of the specified CRS'
      + ' (e.g., Z, Altitude)","type":"number"},"crs":{"type":"object","descrip'
      + 'tion":"Global Coordinate Reference '
      + 'System","properties":{"epsg":{"description":"EPSG '
      + 'code","type":"integer","minimum":0},"wkt":{"description":"\"Well-Known'
      + ' Text\" string, OGC WKT dialect (see http://www.opengeospatial.org/sta'
      + 'ndards/wkt-crs)","type":"string"}},"required":["epsg"]},"horizontal_ac'
      + 'curacy":{"description":"Horizontal accuracy [m]","type":"number","mini'
      + 'mum":0,"exclusiveMinimum":true}},"required":["coordinate_1","coordinat'
      + 'e_2","coordinate_3","horizontal_accuracy","vertical_accuracy","crs"]},'
      + '"orientation":{"description":"Orientation values and orientation '
      + 'accuracies, measured with IMU or inclination '
      + 'sensors.","type":"object","properties":{"yaw":{"description":"Yaw '
      + 'angle about scanner Z-axis [deg]","type":"number","maximum":360,"minim'
      + 'um":-360},"pitch":{"description":"Pitch angle about scanner Y-axis [de'
      + 'g]","type":"number","maximum":360,"minimum":-360},"roll_accuracy":{"de'
      + 'scription":"Roll angle accuracy [deg]","type":"number","minimum":0,"ex'
      + 'clusiveMinimum":true},"pitch_accuracy":{"description":"Pitch angle '
      + 'accuracy [deg]","type":"number","minimum":0,"exclusiveMinimum":true},"'
      + 'yaw_accuracy":{"description":"Yaw angle accuracy [deg]","type":"number'
      + '","minimum":0,"exclusiveMinimum":true},"roll":{"description":"Roll '
      + 'angle about scanner X-axis [deg]","type":"number","maximum":360,"minim'
      + 'um":-360}},"required":["roll","pitch","yaw","roll_accuracy","pitch_acc'
      + 'uracy","yaw_accuracy"]},"barometric_height_amsl":{"description":"Altit'
      + 'ude determined based on the atmospheric pressure according to the '
      + 'standard atmosphere laws [m].","type":"number"}}}'
    );

    Example : (''
      + '{"position":{"coordinate_1":48.655799473,"coordinate_2":15.645033406,"'
      + 'vertical_accuracy":1.3314999341964722,"coordinate_3":362.7124938964844'
      + ',"crs":{"epsg":4979,"wkt":"GEOGCS[\"WGS84 / Geographic\",DATUM[\"WGS84'
      + '\",SPHEROID[\"WGS84\",6378137.000,298.257223563,AUTHORITY[\"EPSG\",\"7'
      + '030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0.000000000'
      + '0000000,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"Degree\",0.01745329251994'
      + '329547,AUTHORITY[\"EPSG\",\"9102\"]],AXIS[\"Latitude\",NORTH],AXIS[\"L'
      + 'ongitude\",EAST],AUTHORITY[\"EPSG\",\"4979\"]]"},"horizontal_accuracy"'
      + ':0.810699999332428},"orientation":{"yaw":101.87293630292045,"pitch":1.'
      + '509153024827064,"roll_accuracy":0.009433783936875745,"pitch_accuracy":'
      + '0.009433783936875745,"yaw_accuracy":1.0094337839368757,"roll":3.147430'
      + '73066123},"barometric_height_amsl":386.7457796227932}'
    );
  );

// Details on position and orientation sensors
const
  RDB_RIEGL_POSE_SENSORS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.pose_sensors';
    Title       : 'Pose Sensors';
    Description : 'Details on position and orientation sensors';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details on position and orientation sensors","type":"o'
      + 'bject","$schema":"http://json-schema.org/draft-04/schema#","title":"Po'
      + 'se Sensors","required":["gyroscope","accelerometer","magnetic_field_se'
      + 'nsor"],"definitions":{"vector":{"type":"array","minItems":3,"items":{"'
      + 'type":"number","description":"Index 0=X, 1=Y, 2=Z component"},"maxItem'
      + 's":3}},"properties":{"magnetic_field_sensor":{"type":"object","descrip'
      + 'tion":"Magnetic Field Sensor '
      + 'details","properties":{"z_axis":{"description":"Sensitive Z axis of '
      + 'sensor at frame angle = '
      + '0","$ref":"#/definitions/vector"},"fixed":{"description":"Distortion '
      + 'of magnetic field caused by non-rotating scanner '
      + 'part","$ref":"#/definitions/vector"},"offset":{"description":"Value to'
      + ' be subtracted from raw measurement values","$ref":"#/definitions/vect'
      + 'or"},"y_axis":{"description":"Sensitive Y axis of sensor at frame '
      + 'angle = '
      + '0","$ref":"#/definitions/vector"},"x_axis":{"description":"Sensitive X'
      + ' axis of sensor at frame angle = 0","$ref":"#/definitions/vector"},"re'
      + 'lative_nonlinearity":{"description":"Relative nonlinearity, dimensionl'
      + 'ess","$ref":"#/definitions/vector"},"unit":{"type":"number","descripti'
      + 'on":"Unit of raw data and calibration values, 1 LSB in nT","minimum":0'
      + ',"exclusiveMinimum":true}},"required":["unit","x_axis","y_axis","z_axi'
      + 's","offset","fixed","relative_nonlinearity"]},"gyroscope":{"type":"obj'
      + 'ect","description":"Gyroscope '
      + 'details","properties":{"z_axis":{"description":"Sensitive Z axis of '
      + 'sensor at frame angle = '
      + '0","$ref":"#/definitions/vector"},"origin":{"description":"Sensor '
      + 'origin in SOCS [m] at frame angle = '
      + '0","$ref":"#/definitions/vector"},"offset":{"description":"Value to be'
      + ' subtracted from raw measurement values","$ref":"#/definitions/vector"'
      + '},"y_axis":{"description":"Sensitive Y axis of sensor at frame angle ='
      + ' 0","$ref":"#/definitions/vector"},"x_axis":{"description":"Sensitive '
      + 'X axis of sensor at frame angle = 0","$ref":"#/definitions/vector"},"r'
      + 'elative_nonlinearity":{"description":"Relative nonlinearity, dimension'
      + 'less","$ref":"#/definitions/vector"},"unit":{"type":"number","descript'
      + 'ion":"Unit of raw data and calibration values, 1 LSB in rad/s","minimu'
      + 'm":0,"exclusiveMinimum":true}},"required":["unit","x_axis","y_axis","z'
      + '_axis","offset","origin","relative_nonlinearity"]},"accelerometer":{"t'
      + 'ype":"object","description":"Accelerometer '
      + 'details","properties":{"z_axis":{"description":"Sensitive Z axis of '
      + 'sensor at frame angle = '
      + '0","$ref":"#/definitions/vector"},"origin":{"description":"Sensor '
      + 'origin in SOCS [m] at frame angle = '
      + '0","$ref":"#/definitions/vector"},"offset":{"description":"Value to be'
      + ' subtracted from raw measurement values","$ref":"#/definitions/vector"'
      + '},"y_axis":{"description":"Sensitive Y axis of sensor at frame angle ='
      + ' 0","$ref":"#/definitions/vector"},"x_axis":{"description":"Sensitive '
      + 'X axis of sensor at frame angle = 0","$ref":"#/definitions/vector"},"r'
      + 'elative_nonlinearity":{"description":"Relative nonlinearity, dimension'
      + 'less","$ref":"#/definitions/vector"},"unit":{"type":"number","descript'
      + 'ion":"Unit of raw data and calibration values, 1 LSB in 9.81 m/s\u00b2'
      + '","minimum":0,"exclusiveMinimum":true}},"required":["unit","x_axis","y'
      + '_axis","z_axis","offset","origin","relative_nonlinearity"]}}}'
    );

    Example : (''
      + '{"magnetic_field_sensor":{"z_axis":[0.00041987866279669106,7.876977906'
      + '562388e-05,0.011407104320824146],"fixed":[-1576.010498046875,1596.0817'
      + '87109375,0.0],"offset":[-23812.052734375,5606.57666015625,2493.28125],'
      + '"y_axis":[0.00027888521435670555,-0.011427424848079681,-5.204829722060'
      + '822e-05],"x_axis":[-0.011162743903696537,-2.315962774446234e-05,0.0001'
      + '6818844596855342],"relative_nonlinearity":[0.0,0.0,0.0],"unit":91.7431'
      + '1828613281},"gyroscope":{"z_axis":[0.555869996547699,119.2213516235351'
      + '6,0.467585027217865],"origin":[0.026900000870227814,-0.039999999105930'
      + '33,-0.08950000256299973],"offset":[-50.92609786987305,146.156433105468'
      + '75,62.4327278137207],"y_axis":[-0.440765917301178,-0.7897399663925171,'
      + '119.5894775390625],"x_axis":[-121.195556640625,0.8219714164733887,0.23'
      + '13031703233719],"relative_nonlinearity":[2.888176311444113e-07,1.06274'
      + '164579645e-07,-1.7186295080634935e-39],"unit":0.00014544410805683583},'
      + '"accelerometer":{"z_axis":[1.639882206916809,15166.744140625,-116.9974'
      + '2889404297],"origin":[0.026900000870227814,-0.03999999910593033,-0.089'
      + '50000256299973],"offset":[-733.3636474609375,58.969032287597656,1060.2'
      + '550048828125],"y_axis":[-7.027288913726807,-44.12333679199219,14952.37'
      + '01171875],"x_axis":[-15008.123046875,56.956390380859375,-60.5175666809'
      + '082],"relative_nonlinearity":[0.0,0.0,0.0],"unit":6.666666740784422e-0'
      + '5}}'
    );
  );

// Laser pulse position modulation used for MTA resolution
const
  RDB_RIEGL_PULSE_POSITION_MODULATION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.pulse_position_modulation';
    Title       : 'Pulse Position Modulation';
    Description : 'Laser pulse position modulation used for MTA resolution';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Laser pulse position modulation used for MTA resolutio'
      + 'n","type":"object","$schema":"http://json-schema.org/draft-04/schema#"'
      + ',"title":"Pulse Position Modulation","required":["length","num_mod_amp'
      + 'l","pulse_interval"],"properties":{"length":{"type":"integer","descrip'
      + 'tion":"Length of code","maximum":255,"minimum":0},"pulse_interval":{"t'
      + 'ype":"array","description":"Explicit table of the pulse position '
      + 'modulation used for MTA resolution. Table gives times between '
      + 'successive laser pulses in seconds.","items":{"type":"number","minimum'
      + '":0}},"phase_step":{"type":"integer","description":"Step width in '
      + 'phase of modulation code from line to line","maximum":255,"minimum":0}'
      + ',"code_phase_mode":{"type":"integer","description":"0: no '
      + 'synchronization, 1: toggle between 2 phases, 2: increment with phase_i'
      + 'ncrement","maximum":255,"minimum":0},"num_mod_ampl":{"type":"integer",'
      + '"description":"Number of different modulation amplitudes (2: binary '
      + 'modulation)","maximum":255,"minimum":0}}}'
    );

    Example : (''
      + '{"length":31,"pulse_interval":[2.759375e-06,2.759375e-06,2.759375e-06,'
      + '2.759375e-06,2.821875e-06,2.759375e-06,2.759375e-06,2.821875e-06,2.759'
      + '375e-06,2.821875e-06,2.821875e-06,2.759375e-06,2.759375e-06,2.821875e-'
      + '06,2.821875e-06,2.821875e-06,2.821875e-06,2.821875e-06,2.759375e-06,2.'
      + '759375e-06,2.759375e-06,2.821875e-06,2.821875e-06,2.759375e-06,2.82187'
      + '5e-06,2.821875e-06,2.821875e-06,2.759375e-06,2.821875e-06,2.759375e-06'
      + ',2.821875e-06],"phase_step":5,"code_phase_mode":2,"num_mod_ampl":2}'
    );
  );

// Statistics about target distance wrt. SOCS origin
const
  RDB_RIEGL_RANGE_STATISTICS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.range_statistics';
    Title       : 'Range Statistics';
    Description : 'Statistics about target distance wrt. SOCS origin';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Statistics about target distance wrt. SOCS origin","ty'
      + 'pe":"object","$schema":"http://json-schema.org/draft-04/schema#","titl'
      + 'e":"Range Statistics","required":["minimum","average","maximum","std_d'
      + 'ev"],"properties":{"std_dev":{"type":"number","description":"Standard '
      + 'deviation"},"maximum":{"type":"number","description":"Maximum '
      + 'value"},"minimum":{"type":"number","description":"Minimum '
      + 'value"},"average":{"type":"number","description":"Average value"}}}'
    );

    Example : (''
      + '{"std_dev":24.349,"maximum":574.35,"minimum":0.919,"average":15.49738}'
    );
  );

// Receiver Internals
const
  RDB_RIEGL_RECEIVER_INTERNALS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.receiver_internals';
    Title       : 'Receiver Internals';
    Description : 'Receiver Internals';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Receiver Internals","type":"object","$schema":"http://'
      + 'json-schema.org/draft-04/schema#","title":"Receiver Internals","defini'
      + 'tions":{"fp_table_row":{"type":"array","minItems":1,"items":{"type":"n'
      + 'umber"},"maxItems":2048},"fp_table":{"type":"object","desription":"sca'
      + 'nner internal data","properties":{"ch":{"type":"integer","max":255,"mi'
      + 'n":0,"description":"channel '
      + 'number"},"tc":{"type":"integer","max":255,"min":0,"description":"table'
      + ' data type '
      + 'code"},"ny":{"type":"integer","max":2048,"min":1,"description":"number'
      + ' of y entries"},"tv":{"type":"array","minItems":1,"items":{"oneOf":[{"'
      + '$ref":"#/definitions/fp_table_row"},{"type":"number"}]},"maxItems":204'
      + '8},"nx":{"type":"integer","max":2048,"min":1,"description":"number of '
      + 'x entries"}},"required":["ch","tc","nx","ny","tv"]},"fp":{"type":"obje'
      + 'ct","description":"Fingerprint values","properties":{"s":{"type":"arra'
      + 'y","minItems":1,"items":{"type":"array","minItems":1,"items":{"type":"'
      + 'number"},"maxItems":4096},"maxItems":256},"w":{"type":"array","minItem'
      + 's":1,"items":{"type":"array","minItems":5,"items":{"type":"number"},"m'
      + 'axItems":5},"maxItems":256}},"required":["s","w"]}},"properties":{"a":'
      + '{"type":"array","minItems":1,"description":"Amplitude [dB]","items":{"'
      + 'type":"number"},"maxItems":256},"tbl":{"type":"array","minItems":1,"it'
      + 'ems":{"$ref":"#/definitions/fp_table"},"description":"various internal'
      + ' data"},"sr":{"type":"number","exclusiveMinimum":true,"minimum":0,"des'
      + 'cription":"Sample rate [Hz]"},"mw":{"type":"number","exclusiveMinimum"'
      + ':true,"maximum":4095,"minimum":0,"description":"Maximum '
      + 'weight"},"ex":{"type":"object","description":"DEPRECATED, use '
      + '''riegl.exponential_decomposition'' '
      + 'instead"},"ns":{"type":"integer","description":"Number of samples","ma'
      + 'ximum":4095,"minimum":0},"nt":{"type":"integer","description":"Number '
      + 'of traces","maximum":255,"minimum":0},"t":{"type":"object","additional'
      + 'Properties":false,"patternProperties":{"^[0-9]+$":{"description":"one '
      + 'field per channel, field name is channel index","$ref":"#/definitions/'
      + 'fp"}}},"si":{"type":"number","description":"Start index '
      + '(hw_start)","maximum":255,"minimum":0}}}'
    );

    Example : (''
      + '{"a":[-1.55],"tbl":[{"ch":0,"tc":1,"ny":2,"tv":[[1,2,3,4,5],[1.1,2.2,3'
      + '.3,4.4,5.5]],"nx":5}],"sr":7959997000.0,"mw":31,"ns":400,"nt":128,"t":'
      + '{"1":{"s":[[1.23,4.56],[7.89,0.12]],"w":[[78,86,126,134,31],[78,86,126'
      + ',134,31]]},"0":{"s":[[1.23,4.56],[7.89,0.12]],"w":[[78,86,126,134,31],'
      + '[78,86,126,134,31]]}},"si":48}'
    );
  );

// Lookup table for reflectance calculation based on amplitude and range
const
  RDB_RIEGL_REFLECTANCE_CALCULATION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.reflectance_calculation';
    Title       : 'Reflectance Calculation Table';
    Description : 'Lookup table for reflectance calculation based on amplitude and range';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Lookup table for reflectance calculation based on '
      + 'amplitude and range","type":"object","$schema":"http://json-schema.org'
      + '/draft-04/schema#","title":"Reflectance Calculation Table","required":'
      + '["delta","content"],"properties":{"delta":{"description":"Delta '
      + 'between table entries [m], first entry is at range = 0 '
      + 'm","type":"number"},"content":{"description":"Correction value [dB] to'
      + ' be added to the amplitude","type":"array","maxItems":2000,"items":{"t'
      + 'ype":"number"},"minItems":1}}}'
    );

    Example : (''
      + '{"delta":0.150918,"content":[-33.01]}'
    );
  );

// Range-dependent and scan-angle-dependent correction of reflectance reading
const
  RDB_RIEGL_REFLECTANCE_CORRECTION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.reflectance_correction';
    Title       : 'Near-Range Reflectance Correction';
    Description : 'Range-dependent and scan-angle-dependent correction of reflectance reading';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Range-dependent and scan-angle-dependent correction of'
      + ' reflectance reading","type":"object","$schema":"http://json-schema.or'
      + 'g/draft-04/schema#","title":"Near-range reflectance correction","requi'
      + 'red":["ranges_m","line_angles_deg","reflectance_correction_db"],"prope'
      + 'rties":{"line_angles_deg":{"type":"array","description":"Angle [deg]",'
      + '"items":{"type":"number"}},"reflectance_correction_db":{"type":"array"'
      + ',"description":"Near range reflectance correction in dB as a function '
      + 'of range over angle","items":{"description":"rows (each array '
      + 'corresponds to a '
      + 'range)","type":"array","items":{"description":"columns (each value '
      + 'corresponds to an angle)","type":"number"}}},"ranges_m":{"type":"array'
      + '","description":"Range [m]","items":{"type":"number"}}}}'
    );

    Example : (''
      + '{"line_angles_deg":[0.0,0.5,1.0,1.5,1.0,2.0,2.5,3.0,3.5,4.0],"reflecta'
      + 'nce_correction_db":[[0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.05,0.01],[0.8,0'
      + '.7,0.6,0.5,0.4,0.3,0.2,0.1,0.05,0.01],[0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1'
      + ',0.05,0.01],[0.8,0.7,0.6,0.5,0.4,0.3,0.2,0.1,0.05,0.01]],"ranges_m":[0'
      + '.0,1.0,2.0,3.0]}'
    );
  );

// Details about RiLOC processing
const
  RDB_RIEGL_RILOC_PROCESSING_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.riloc_processing_info';
    Title       : 'RiLOC Processing Information';
    Description : 'Details about RiLOC processing';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about RiLOC processing","type":"object","$sche'
      + 'ma":"http://json-schema.org/draft-04/schema#","title":"RiLOC '
      + 'Processing Information","required":["trajectory","optimizer","georefer'
      + 'encing"],"properties":{"planes":{"description":"Information on plane '
      + 'correspondences and used extraction/matching templates.","type":"objec'
      + 't","properties":{}},"optimizer":{"description":"Optimization result '
      + 'information and statistics.","type":"object","properties":{}},"traject'
      + 'ory":{"description":"Trajectory information and statistics.","type":"o'
      + 'bject","properties":{}},"georeferencing":{"description":"Internal '
      + 'georeferencing parameters.","type":"object","properties":{}}}}'
    );

    Example : (''
      + '{"planes":{},"optimizer":{},"trajectory":{},"georeferencing":{}}'
    );
  );

// Scan pattern description
const
  RDB_RIEGL_SCAN_PATTERN : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.scan_pattern';
    Title       : 'Scan Pattern';
    Description : 'Scan pattern description';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Scan pattern description","$schema":"http://json-schem'
      + 'a.org/draft-04/schema#","properties":{"rectangular":{"description":"Re'
      + 'ctangular Field Of View Scan Pattern","type":"object","properties":{"p'
      + 'hi_start":{"description":"Start phi angle in SOCS [deg]","type":"numbe'
      + 'r","maximum":360.0,"minimum":0.0},"theta_increment":{"description":"In'
      + 'crement of theta angle in SOCS [deg]","type":"number","maximum":90.0,"'
      + 'minimum":0.0},"program":{"$ref":"#/definitions/program"},"phi_incremen'
      + 't":{"description":"Increment of phi angle in SOCS [deg]","type":"numbe'
      + 'r","maximum":90.0,"minimum":0.0},"theta_start":{"description":"Start '
      + 'theta angle in SOCS [deg]","type":"number","maximum":180.0,"minimum":0'
      + '.0},"theta_stop":{"description":"Stop theta angle in SOCS [deg]","type'
      + '":"number","maximum":180.0,"minimum":0.0},"phi_stop":{"description":"S'
      + 'top phi angle in SOCS [deg]","type":"number","maximum":720.0,"minimum"'
      + ':0.0}},"required":["phi_start","phi_stop","phi_increment","theta_start'
      + '","theta_stop","theta_increment"]},"line":{"description":"Line Scan '
      + 'Pattern","type":"object","properties":{"stop":{"description":"Stop '
      + 'angle in SOCS [deg]","type":"number","maximum":720.0,"minimum":0.0},"i'
      + 'ncrement":{"description":"Increment of angle in SOCS [deg]","type":"nu'
      + 'mber","maximum":90.0,"minimum":0.0},"program":{"$ref":"#/definitions/p'
      + 'rogram"},"start":{"description":"Start angle in SOCS [deg]","type":"nu'
      + 'mber","maximum":360.0,"minimum":0.0}},"required":["start","stop","incr'
      + 'ement"]},"segments":{"description":"Segmented Line Scan Pattern","type'
      + '":"object","properties":{"list":{"type":"array","items":{"description"'
      + ':"Line Scan '
      + 'Segment","type":"object","properties":{"stop":{"description":"Stop '
      + 'angle in SOCS [deg]","type":"number","maximum":720.0,"minimum":0.0},"i'
      + 'ncrement":{"description":"Increment of angle in SOCS [deg]","type":"nu'
      + 'mber","maximum":90.0,"minimum":0.0},"start":{"description":"Start '
      + 'angle in SOCS [deg]","type":"number","maximum":360.0,"minimum":0.0}},"'
      + 'required":["start","stop","increment"]}},"program":{"$ref":"#/definiti'
      + 'ons/program"}},"required":["list"]}},"definitions":{"program":{"descri'
      + 'ption":"Measurement '
      + 'program","type":"object","properties":{"name":{"description":"Name of '
      + 'measurement '
      + 'program","type":"string"},"laser_prr":{"description":"Laser Pulse '
      + 'Repetition Rate [Hz]","type":"number","minimum":0,"exclusiveMinimum":f'
      + 'alse}},"required":["name"]}},"title":"Scan Pattern"}'
    );

    Example : (''
      + '{"rectangular":{"phi_start":45.0,"theta_increment":0.04,"program":{"na'
      + 'me":"High Speed","laser_prr":100000.0},"phi_increment":0.04,"theta_sta'
      + 'rt":30.0,"theta_stop":130.0,"phi_stop":270.0}}'
    );
  );

// Details about laser shot files
const
  RDB_RIEGL_SHOT_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.shot_info';
    Title       : 'Shot Information';
    Description : 'Details about laser shot files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about laser shot files","type":"object","$sche'
      + 'ma":"http://json-schema.org/draft-04/schema#","properties":{"shot_file'
      + '":{"type":"object","required":["file_extension"],"properties":{"file_e'
      + 'xtension":{"description":"Shot file extension, without the leading '
      + 'dot","type":"string"},"file_uuid":{"description":"File''s Universally '
      + 'Unique Identifier (RFC 4122)","type":"string"}}}},"title":"Shot '
      + 'Information"}'
    );

    Example : (''
      + '{"shot_file":{"file_extension":"sodx","file_uuid":"26a00815-67c0-4bff-'
      + '8fe8-c577378fe663"}}'
    );
  );

// Point filters applied in addition to the application-defined filters
const
  RDB_RIEGL_STORED_FILTERS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.stored_filters';
    Title       : 'Stored Filters';
    Description : 'Point filters applied in addition to the application-defined filters';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Point filters applied in addition to the '
      + 'application-defined filters","type":"object","$schema":"http://json-sc'
      + 'hema.org/draft-04/schema#","title":"Stored filters","required":["activ'
      + 'ated","filters"],"properties":{"activated":{"description":"Apply '
      + '(''true'') or ignore (''false'') all '
      + 'filters","type":"boolean"},"filters":{"description":"List of point '
      + 'filters","type":"array","items":{"description":"Point filter definitio'
      + 'n","type":"object","properties":{"activated":{"description":"Apply '
      + '(''true'') or ignore (''false'') this '
      + 'filter","type":"boolean"},"description":{"description":"A brief '
      + 'description of the filter (e.g. for display in a '
      + 'tooltip)","type":"string"},"title":{"description":"A short filter '
      + 'title (e.g. for display in a selection '
      + 'list)","type":"string"},"filter":{"description":"The RDB filter string'
      + ' to apply (e.g. when reading points or index), details see '
      + 'documentation of function select()","type":"string"}},"required":["act'
      + 'ivated","title","description","filter"]}}}}'
    );

    Example : (''
      + '{"activated":true,"filters":[{"activated":false,"description":"Ignore '
      + 'points with uncertain MTA zone assignment","title":"Ignore uncertain '
      + 'points from MTA resolution","filter":"riegl.mta_uncertain_point == '
      + '0"},{"activated":false,"description":"Ignore points with an echo '
      + 'signal amplitude below the dynamic trigger","title":"Ignore points '
      + 'below dynamic trigger level","filter":"riegl.dyntrig_uncertain_point '
      + '== 0"},{"activated":false,"description":"Ignore points that are '
      + 'outside the outer AABB in BOCS","title":"Ignore points outside outer '
      + 'AABB","filter":"riegl.point_outside_aabb_bocs == '
      + '0"},{"activated":false,"description":"Ignore points that are inside '
      + 'the inner AABB in BOCS","title":"Ignore points inside inner '
      + 'AABB","filter":"riegl.point_inside_aabb_bocs == 0"}]}'
    );
  );

// Details of major system components like lidar sensors, cameras and navigation devices
const
  RDB_RIEGL_SYSTEM_DESCRIPTION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.system_description';
    Title       : 'System Description';
    Description : 'Details of major system components like lidar sensors, cameras and navigation devices';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details of major system components like lidar sensors,'
      + ' cameras and navigation devices","type":"object","$schema":"http://jso'
      + 'n-schema.org/draft-04/schema#","title":"System Description","required"'
      + ':["$class","version","author","timestamp","system"],"properties":{"$cl'
      + 'ass":{"description":"Object class name","type":"string","enum":["Docum'
      + 'ent"]},"timestamp":{"description":"Date and time of creation (e.g. 201'
      + '9-06-19T13:32:10+02:00)","type":"string"},"system":{"description":"The'
      + ' actual system description, details see documentation of RIEGL System '
      + 'Description","type":"object"},"author":{"description":"Name of the '
      + 'author that created the '
      + 'document","type":"string"},"version":{"description":"Document format '
      + 'version","type":"string"}}}'
    );

    Example : (''
      + '{"$class":"Document","timestamp":"2022-09-30T11:56:26+00:00","system":'
      + '{"details":"see documentation of RIEGL System '
      + 'Description"},"author":"RIEGL LMS GmbH, Austria","version":"1.2.1"}'
    );
  );

// Conversion of background radiation raw values to temperatures in °C
const
  RDB_RIEGL_TEMPERATURE_CALCULATION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.temperature_calculation';
    Title       : 'Temperature Calculation Table';
    Description : 'Conversion of background radiation raw values to temperatures in °C';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Conversion of background radiation raw values to '
      + 'temperatures in \u00b0C","type":"object","$schema":"http://json-schema'
      + '.org/draft-04/schema#","title":"Temperature Calculation Table","defini'
      + 'tions":{"conversion_table":{"type":"object","required":["value","tempe'
      + 'rature"],"properties":{"value":{"type":"array","description":"LSB [1]"'
      + ',"items":{"type":"number"}},"temperature":{"type":"array","description'
      + '":"Temperature [\u00b0C]","items":{"type":"number"}}}}},"properties":{'
      + '"InGaAs_Si_Difference":{"description":"Conversion table for InGaAs - '
      + 'Si difference","$ref":"#/definitions/conversion_table"},"Si":{"descrip'
      + 'tion":"Conversion table for Si channel","$ref":"#/definitions/conversi'
      + 'on_table"},"InGaAs":{"description":"Conversion table for InGaAs '
      + 'channel","$ref":"#/definitions/conversion_table"}}}'
    );

    Example : (''
      + '{"InGaAs_Si_Difference":{"value":[1000.0,1100.090029602954,1200.044251'
      + '83874,1300.1342814416948,1400.0885036774805,1500.0427259132668,1600.13'
      + '27555162209,1700.0869777520065,1800.0411999877924],"temperature":[1749'
      + '.977111117893,1749.977111117893,1749.977111117893,1749.977111117893,17'
      + '49.977111117893,1749.977111117893,1744.7813348796044,1681.997131260109'
      + '2,1622.3944822534868]},"Si":{"value":[0.0,64.00097659230323,128.001953'
      + '1846065,192.0029297769097,256.0039063692129,320.00488296151616,384.005'
      + '8595538194,448.0068361461226,512.0078127384259],"temperature":[546.300'
      + '048828125,548.8164051212026,551.3143938500972,554.0144257850053,556.60'
      + '4252334815,559.2124464488079,561.8022729986177,564.4104671126105,567.0'
      + '002936624203]},"InGaAs":{"value":[0.0,64.00097659230323,128.0019531846'
      + '065,192.0029297769097,256.0039063692129,320.00488296151616,384.0058595'
      + '538194,448.0068361461226,512.0078127384259],"temperature":[307.2219672'
      + '2535614,309.1153478247277,311.1188086915047,313.10025350480055,315.213'
      + '7946389828,317.2172555057597,319.2207163725366,321.2021611858325,323.3'
      + '157023200148]}}'
    );
  );

// Details about the tie object reference file
const
  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.tie_object_reference_file';
    Title       : 'Tie Object Reference file';
    Description : 'Details about the tie object reference file';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the tie object reference file","type":"o'
      + 'bject","$schema":"http://json-schema.org/draft-04/schema#","properties'
      + '":{"reference_file":{"type":"object","description":"Reference to a tie'
      + ' object file","properties":{"file_uuid":{"description":"Tie object '
      + 'file''s Universally Unique Identifier (RFC '
      + '4122)","type":"string"},"file_path":{"description":"Path of the tie '
      + 'object file relative to referring file","type":"string"}},"required":['
      + '"file_uuid","file_path"]}},"title":"Tie Object Reference file"}'
    );

    Example : (''
      + '{"reference_file":{"file_uuid":"7f5f3f4b-3747-41ee-9669-ffed723ef17f",'
      + '"file_path":"../../../11_TIE_OBJECTS/TiePoints.tpx"}}'
    );
  );

// Base of timestamps (epoch)
const
  RDB_RIEGL_TIME_BASE : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.time_base';
    Title       : 'Time Base';
    Description : 'Base of timestamps (epoch)';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Base of timestamps (epoch)","type":"object","$schema":'
      + '"http://json-schema.org/draft-04/schema#","title":"Time Base","require'
      + 'd":["epoch","source"],"properties":{"source":{"description":"Timestamp'
      + ' source","type":"string","enum":["unknown","RTC","GNSS"]},"epoch":{"de'
      + 'scription":"Date and time of timestamp ''0'' as proposed by RFC 3339 '
      + '(e.g. 2015-10-27T00:00:00+01:00).","type":"string"},"system":{"descrip'
      + 'tion":"Time system (time '
      + 'standard)","type":"string","enum":["unknown","UTC","GPS"]}}}'
    );

    Example : (''
      + '{"source":"GNSS","epoch":"2015-10-27T00:00:00+00:00","system":"UTC"}'
    );
  );

// Details about position+orientation files
const
  RDB_RIEGL_TRAJECTORY_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.trajectory_info';
    Title       : 'Trajectory Information';
    Description : 'Details about position+orientation files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about position+orientation files","type":"obje'
      + 'ct","$schema":"http://json-schema.org/draft-04/schema#","title":"Traje'
      + 'ctory Information","required":["time_interval","navigation_frame"],"pr'
      + 'operties":{"location":{"description":"Project location, e.g. city/stat'
      + 'e/country","type":"string"},"time_interval":{"description":"Time '
      + 'interval statistics","type":"object","properties":{"std_dev":{"descrip'
      + 'tion":"Standard deviation of intervals '
      + '[s]","type":"number"},"maximum":{"description":"Maximum time interval '
      + '[s]","type":"number"},"minimum":{"description":"Minimum time interval '
      + '[s]","type":"number"},"average":{"description":"Average time interval '
      + '[s]","type":"number"}},"required":["minimum","average","maximum","std_'
      + 'dev"]},"device":{"description":"Navigation device, e.g. name/type/seri'
      + 'al","type":"string"},"navigation_frame":{"description":"Navigation '
      + 'frame (NED: North-East-Down, ENU: East-North-Up)","type":"string","enu'
      + 'm":["unknown","NED","ENU"]},"company":{"description":"Company '
      + 'name","type":"string"},"field_of_application":{"description":"Field of'
      + ' application","type":"string","enum":["unknown","SLS","TLS","KLS","MLS'
      + '","ULS","ALS","BLS","ILS"]},"software":{"description":"Software that '
      + 'calculated the trajectory (this may be the same or different software '
      + 'than the one that created the '
      + 'file)","type":"string"},"project":{"description":"Project '
      + 'name","type":"string"},"settings":{"description":"Settings used to '
      + 'calculate the trajectory (descriptive text)","type":"string"}}}'
    );

    Example : (''
      + '{"location":"Horn","time_interval":{"std_dev":5.51e-07,"maximum":0.005'
      + '004883,"minimum":0.00500032,"average":0.00500053},"device":"IMU Model '
      + '12/1, Serial# 12345","navigation_frame":"NED","company":"RIEGL '
      + 'LMS","field_of_application":"MLS","software":"Navigation Software '
      + 'XYZ","project":"Campaign 3","settings":"default"}'
    );
  );

// Trigger-Timestamping-Unit/IP configuration
const
  RDB_RIEGL_TTIP_CONFIGURATION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.ttip_configuration';
    Title       : 'TTIP Configuration';
    Description : 'Trigger-Timestamping-Unit/IP configuration';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Trigger-Timestamping-Unit/IP configuration","type":"ob'
      + 'ject","$schema":"http://json-schema.org/draft-04/schema#","title":"TTI'
      + 'P Configuration","required":["ttip_version","num_channel","ext_channel'
      + '","ext_signal","ext_delay","ext_subdivider","ext_bitmask","dmi_incr","'
      + 'dmi_min_time","dmi_max_time","dmi_dist_per_tick","channel","output_des'
      + 'cr","input_descr","output_usage","input_usage","out_polarity","out_dur'
      + 'ation","out_interval","out_delay","out_num_pulses","in_polarity","in_m'
      + 'in_duration","in_max_duration","in_max_delay"],"properties":{"ext_subd'
      + 'ivider":{"description":"reduces the frequency, default 1","type":"inte'
      + 'ger","minimum":0},"in_min_duration":{"description":"input signals with'
      + ' smaller pulse durations are ignored [0.1 msec]","type":"integer","min'
      + 'imum":0},"dmi_dist_per_tick":{"description":"dmi, distance per tick, '
      + 'just informative [m]","type":"number"},"input_usage":{"description":"0'
      + ' .. deactivated, 1 .. just detecting and timestamping","type":"integer'
      + '","minimum":0},"ttip_version":{"description":"following main.sub.ss.ss'
      + 's","type":"integer","minimum":0},"dmi_incr":{"description":"dmi, '
      + 'increment in '
      + 'ticks","type":"integer"},"in_max_delay":{"description":"maximum delay '
      + 'to output pulse before fake event is generated [0.1 msec], zero '
      + 'indicates that no fake events are generated","type":"integer","minimum'
      + '":0},"out_interval":{"description":"output pulse interval [0.1 msec]",'
      + '"type":"integer","minimum":0},"out_num_pulses":{"description":"number '
      + 'of output pulses to be generated, 0 .. infinite","type":"integer","min'
      + 'imum":0},"out_polarity":{"description":"0 .. positive edge, 1 .. '
      + 'negative '
      + 'edge","type":"integer","minimum":0},"channel":{"description":"ID of '
      + 'input/output channel","type":"integer","minimum":0},"out_delay":{"desc'
      + 'ription":"output pulse initial delay after start [0.1 '
      + 'msec]","type":"integer","minimum":0},"ext_channel":{"description":"ID '
      + 'of channel used as external trigger input, 32 indicates none","type":"'
      + 'integer","minimum":0},"output_descr":{"description":"descriptive '
      + 'string","type":"string"},"num_channel":{"description":"number of '
      + 'input/output channels","type":"integer","minimum":0},"ext_bitmask":{"d'
      + 'escription":"defines which of the internal pulse generators are to be '
      + 'started","type":"integer","minimum":0},"dmi_min_time":{"description":"'
      + 'dmi, minimum time interval between trigger events [0.1 '
      + 'msec]","type":"integer","minimum":0},"ext_signal":{"description":"0 ..'
      + ' use input signal, 1 .. use output signal of channel","type":"integer"'
      + ',"minimum":0},"ext_delay":{"description":"external trigger, time delay'
      + ' [0.1 msec]","type":"integer","minimum":0},"out_duration":{"descriptio'
      + 'n":"output pulse duration [0.1 msec]","type":"integer","minimum":0},"d'
      + 'mi_max_time":{"description":"dmi, maximum time interval between '
      + 'trigger events [0.1 msec]","type":"integer","minimum":0},"in_max_durat'
      + 'ion":{"description":"stops measurement of pulse duration of input '
      + 'signal [0.1 '
      + 'msec]","type":"integer","minimum":0},"output_usage":{"description":"0 '
      + '.. no output, 1 .. output derived from internal clock, 2 .. output '
      + 'derived from dmi, 3 .. output derived from external signal, 4 .. '
      + 'output static low, 5 .. output static high","type":"integer","minimum"'
      + ':0},"input_descr":{"description":"descriptive '
      + 'string","type":"string"},"in_polarity":{"description":"0 .. positive '
      + 'edge, 1 .. negative edge","type":"integer","minimum":0}}}'
    );

    Example : (''
      + '{"ext_subdivider":1,"in_min_duration":0,"dmi_dist_per_tick":0.0,"input'
      + '_usage":1,"ttip_version":1,"dmi_incr":0,"in_max_delay":9990,"out_inter'
      + 'val":10000,"out_num_pulses":1,"out_polarity":0,"channel":0,"out_delay"'
      + ':0,"ext_channel":32,"output_descr":"Port 1 - Trigger","num_channel":9,'
      + '"ext_bitmask":0,"dmi_min_time":0,"ext_signal":0,"ext_delay":0,"out_dur'
      + 'ation":300,"dmi_max_time":0,"in_max_duration":10000,"output_usage":1,"'
      + 'input_descr":"Port 1 - Exposure","in_polarity":0}'
    );
  );

// Details about vertex file
const
  RDB_RIEGL_VERTEX_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.vertex_info';
    Title       : 'Vertex Information';
    Description : 'Details about vertex file';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about vertex file","type":"object","$schema":"'
      + 'http://json-schema.org/draft-04/schema#","properties":{"vertex_file":{'
      + '"type":"object","required":["file_extension"],"properties":{"file_exte'
      + 'nsion":{"description":"Vertex file extension, without the leading '
      + 'dot","type":"string"},"file_uuid":{"description":"File''s Universally '
      + 'Unique Identifier (RFC 4122)","type":"string"}}}},"title":"Vertex '
      + 'Information"}'
    );

    Example : (''
      + '{"vertex_file":{"file_extension":"vtx","file_uuid":"51534d95-d71f-4f36'
      + '-ae1a-3e63a21fd1c7"}}'
    );
  );

// Details about the voxels contained in the file
const
  RDB_RIEGL_VOXEL_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.voxel_info';
    Title       : 'Voxel Information';
    Description : 'Details about the voxels contained in the file';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Details about the voxels contained in the file","type"'
      + ':"object","$schema":"http://json-schema.org/draft-04/schema#","title":'
      + '"Voxel Information","oneOf":[{"required":["size","voxel_origin","voxel'
      + '_type"],"additionalProperties":false,"properties":{"shape_thresholds":'
      + '{"$ref":"#/definitions/shape_thresholds"},"voxel_type":{"$ref":"#/defi'
      + 'nitions/voxel_type"},"voxel_origin":{"$ref":"#/definitions/voxel_origi'
      + 'n_enum"},"size":{"description":"Size of voxels in file coordinate syst'
      + 'em.","oneOf":[{"$ref":"#/definitions/voxel_size"},{"$ref":"#/definitio'
      + 'ns/voxel_size_cubic"}]}}},{"required":["reference_point","size_llcs","'
      + 'size","voxel_origin","voxel_type"],"additionalProperties":false,"prope'
      + 'rties":{"voxel_origin":{"oneOf":[{"$ref":"#/definitions/voxel_origin_e'
      + 'num"},{"description":"The base point of the voxel grid. Used together '
      + 'with <tt>voxel_size</tt> and <tt>voxel_index</tt> to compute actual '
      + 'point coordinates.","$ref":"#/definitions/voxel_origin_point"}]},"refe'
      + 'rence_point":{"description":"Point in WGS84 geodetic decimal degree '
      + '(EPSG:4326) that was used to compute the projection distortion '
      + 'parameters. The coefficient order is latitude, longitude. Only voxels '
      + 'with corresponding geo_tag, voxel_size and reference_point can be '
      + 'reliably processed together. This entry is available for voxel files '
      + 'in projected CRS only.","type":"array","maxItems":2,"items":{"type":"n'
      + 'umber","maximum":180,"minimum":-180},"minItems":2},"size":{"descriptio'
      + 'n":"Size of voxels in file coordinate system.","$ref":"#/definitions/v'
      + 'oxel_size"},"shape_thresholds":{"$ref":"#/definitions/shape_thresholds'
      + '"},"size_llcs":{"description":"Size of voxels in a locally levelled '
      + 'cartesian coordinate system (xyz). This is only used for voxels based '
      + 'on a map projection.","$ref":"#/definitions/voxel_size"},"voxel_type":'
      + '{"$ref":"#/definitions/voxel_type"}}}],"definitions":{"edge_length":{"'
      + 'description":"Length of voxel edge [m].","exclusiveMinimum":true,"mini'
      + 'mum":0,"type":"number"},"voxel_origin_enum":{"description":"Defines '
      + 'whether the voxel''s center or a corner is placed on CRS origin <tt>(0/'
      + '0/0)</tt>.","enum":["center","corner"],"default":"corner"},"shape_thre'
      + 'sholds":{"description":"Thresholds used to compute the voxel''s '
      + 'shape_id value.","required":["plane","line"],"properties":{"line":{"de'
      + 'scription":"If the biggest eigenvalue is bigger than the median '
      + 'eigenvalue * line_threshold, the voxel is considered a line.","exclusi'
      + 'veMinimum":true,"minimum":1,"type":"number"},"plane":{"description":"I'
      + 'f the smallest eigenvalue is smaller than the median eigenvalue * '
      + 'plane_threshold, the voxel is considered a plane.","type":"number","ma'
      + 'ximum":1,"exclusiveMinimum":true,"minimum":0,"exclusiveMaximum":true}}'
      + ',"type":"object"},"voxel_origin_point":{"description":"Origin point '
      + 'for all voxel indices in voxel CRS.","type":"array","maxItems":3,"item'
      + 's":{"type":"number"},"minItems":3},"voxel_type":{"description":"Whethe'
      + 'r a point in a voxel represents its center or its centroid. If type is'
      + ' <tt>index</tt> there is no point but only an integer voxel index.","e'
      + 'num":["center","centroid","index"],"default":"centroid"},"voxel_size":'
      + '{"description":"Size of voxels.","type":"array","maxItems":3,"items":{'
      + '"$ref":"#/definitions/edge_length"},"minItems":3},"voxel_size_cubic":{'
      + '"type":"number","$ref":"#/definitions/edge_length"}}}'
    );

    Example : (''
      + '{"voxel_origin":"corner","shape_thresholds":{"line":6,"plane":0.16},"s'
      + 'ize":[0.5971642834779395,0.5971642834779395,0.5143705304787237],"refer'
      + 'ence_point":[48,16],"size_llcs":[0.5156575252891171,0.5130835356683303'
      + ',0.5143705304787237],"voxel_type":"centroid"}'
    );
  );

// Settings for waveform averaging
const
  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.waveform_averaging_settings';
    Title       : 'Waveform Averaging Settings';
    Description : 'Settings for waveform averaging';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Settings for waveform averaging","type":"object","$sch'
      + 'ema":"http://json-schema.org/draft-04/schema#","title":"Waveform '
      + 'Averaging Settings","required":["num_shots","mta_zone"],"properties":{'
      + '"num_shots":{"type":"integer","description":"Number of consecutive '
      + 'shots to be used for averaging.","minimum":1},"mta_zone":{"type":"inte'
      + 'ger","description":"Fixed MTA zone for averaging.","minimum":1},"trim"'
      + ':{"type":"number","description":"Percentage for robust '
      + 'averaging.","maximum":0.5,"minimum":0,"default":0}}}'
    );

    Example : (''
      + '{"num_shots":7,"mta_zone":1,"trim":0.05}'
    );
  );

// Details about waveform files
const
  RDB_RIEGL_WAVEFORM_INFO : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.waveform_info';
    Title       : 'Waveform Information';
    Description : 'Details about waveform files';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"type":"object","description":"Details about waveform files","$schema'
      + '":"http://json-schema.org/draft-04/schema#","title":"Waveform Informat'
      + 'ion","required":["sample_block_file","sample_data_files"],"properties"'
      + ':{"sample_data_files":{"type":"array","items":{"type":"object","requir'
      + 'ed":["channel","channel_name","sample_interval","sample_bits","laser_w'
      + 'avelength","delta_st","file_extension"],"properties":{"file_extension"'
      + ':{"description":"Sample data file extension, without the leading dot",'
      + '"type":"string"},"sample_bits":{"type":"integer","description":"Bitwid'
      + 'th of samples (e.g. 10 bit, 12 bit)","maximum":32,"exclusiveMinimum":f'
      + 'alse,"minimum":0,"exclusiveMaximum":false},"laser_wavelength":{"descri'
      + 'ption":"Laser wavelength in meters (0 = unknown)","type":"number","min'
      + 'imum":0,"exclusiveMinimum":false},"delta_st":{"description":"reserved"'
      + ',"type":"number"},"sample_interval":{"description":"Sampling interval '
      + 'in seconds","type":"number","minimum":0,"exclusiveMinimum":false},"fil'
      + 'e_uuid":{"description":"File''s Universally Unique Identifier (RFC '
      + '4122)","type":"string"},"channel_name":{"description":"Sample block '
      + 'channel name","type":"string"},"channel":{"type":"integer","descriptio'
      + 'n":"Sample block channel number (255 = invalid)","maximum":255,"exclus'
      + 'iveMinimum":false,"minimum":0,"exclusiveMaximum":false}}}},"range_offs'
      + 'et_m":{"description":"Calibrated device specific range offset for '
      + 'waveform analysis by system response fitting in meters.","type":"numbe'
      + 'r"},"sample_block_file":{"type":"object","required":["file_extension"]'
      + ',"properties":{"file_extension":{"description":"Sample block file '
      + 'extension, without the leading '
      + 'dot","type":"string"},"file_uuid":{"description":"File''s Universally '
      + 'Unique Identifier (RFC 4122)","type":"string"}}},"range_offset_wavefor'
      + 'm_samples_m":{"description":"Calibrated device specific range offset '
      + 'for waveform samples in meters.","type":"number"}}}'
    );

    Example : (''
      + '{"sample_data_files":[{"file_extension":"sp0","sample_bits":12,"laser_'
      + 'wavelength":0,"delta_st":0,"channel_name":"high_power","file_uuid":"da'
      + '084413-e3e8-4655-a122-071de8490d8e","sample_interval":1.00503e-09,"cha'
      + 'nnel":0},{"file_extension":"sp1","sample_bits":12,"laser_wavelength":0'
      + ',"delta_st":0,"channel_name":"low_power","file_uuid":"93585b5e-5ea9-43'
      + 'a1-947b-e7ba3be642d2","sample_interval":1.00503e-09,"channel":1},{"fil'
      + 'e_extension":"sp5","sample_bits":12,"laser_wavelength":0,"delta_st":0,'
      + '"channel_name":"wwf","file_uuid":"9d2298c4-1036-464f-b5cb-1cf8e517f3a0'
      + '","sample_interval":1.00503e-09,"channel":5}],"range_offset_waveform_s'
      + 'amples_m ":7.283,"range_offset_m":3.1415,"sample_block_file":{"file_ex'
      + 'tension":"sbx","file_uuid":"93a03615-66c0-4bea-8ff8-c577378fe660"}}'
    );
  );

// Scanner settings for waveform output
const
  RDB_RIEGL_WAVEFORM_SETTINGS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.waveform_settings';
    Title       : 'Waveform Settings';
    Description : 'Scanner settings for waveform output';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Scanner settings for waveform output","type":"array","'
      + '$schema":"http://json-schema.org/draft-04/schema#","items":{"type":"ob'
      + 'ject","required":["sbl_name","enabled","channel_idx_mask"],"properties'
      + '":{"enabled":{"description":"Waveform output enabled","type":"boolean"'
      + '},"pass_dev_greater":{"description":"Threshold for deviation greater '
      + 'than '
      + '[1]","type":"integer"},"pass_rng_greater":{"description":"Threshold '
      + 'for range greater than '
      + '[m]","type":"number"},"smart_enabled":{"description":"Smart waveform '
      + 'output '
      + 'enabled","type":"boolean"},"channel_idx_mask":{"description":"Bit mask'
      + ' for channels which belong to sbl_name: Channel 0 = Bit0, Channel 1 = '
      + 'Bit1, ...","type":"integer"},"pass_rng_less":{"description":"Threshold'
      + ' for range less than '
      + '[m]","type":"number"},"pass_ampl_less":{"description":"Threshold for '
      + 'amplitude less than '
      + '[dB]","type":"number"},"pass_ampl_greater":{"description":"Threshold '
      + 'for amplitude greater than '
      + '[dB]","type":"number"},"logic_expression":{"description":"Logic '
      + 'expression of smart waveforms '
      + 'filter","type":"string"},"sbl_name":{"description":"Name of sample '
      + 'block, e.g.: wfm, '
      + 'wwf","type":"string"},"pass_dev_less":{"description":"Threshold for '
      + 'deviation less than [1]","type":"integer"}}},"title":"Waveform '
      + 'Settings"}'
    );

    Example : (''
      + '[{"enabled":true,"pass_rng_greater":9.27,"smart_enabled":true,"channel'
      + '_idx_mask":11,"pass_rng_less":13.11,"pass_ampl_less":5.0,"pass_ampl_gr'
      + 'eater":1.0,"sbl_name":"wfm"},{"enabled":false,"sbl_name":"wwf","channe'
      + 'l_idx_mask":32}]'
    );
  );

// Window analysis data estimated from scandata and resulting filter parameters
const
  RDB_RIEGL_WINDOW_ANALYSIS : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.window_analysis';
    Title       : 'Window Analysis';
    Description : 'Window analysis data estimated from scandata and resulting filter parameters';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Window analysis data estimated from scandata and '
      + 'resulting filter parameters","type":"object","$schema":"http://json-sc'
      + 'hema.org/draft-04/schema#","title":"Window Analysis","required":["resu'
      + 'lt","filter","settings"],"properties":{"result":{"type":"object","requ'
      + 'ired":["angle","range_mean","range_sigma","amplitude_mean","amplitude_'
      + 'sigma","amplitude_offset"],"properties":{"range_mean":{"type":"array",'
      + '"description":"[m]","items":{"type":"number"}},"range_sigma":{"type":"'
      + 'array","description":"[m]","items":{"type":"number"}},"amplitude_sigma'
      + '":{"type":"array","description":"[dB]","items":{"type":"number"}},"tim'
      + 'estamp":{"type":"array","description":"[s]","items":{"type":"number"}}'
      + ',"amplitude_offset":{"type":"array","description":"[dB]","items":{"typ'
      + 'e":"number"}},"angle":{"type":"array","description":"[deg]","items":{"'
      + 'type":"number"}},"amplitude_mean":{"type":"array","description":"[dB]"'
      + ',"items":{"type":"number"}}}},"settings":{"type":"object","required":['
      + '"range","amplitude"],"properties":{"range":{"type":"object","required"'
      + ':["sigma_factor","additive_value"],"properties":{"additive_value":{"ty'
      + 'pe":"number"},"sigma_factor":{"type":"number"}}},"amplitude":{"type":"'
      + 'object","required":["sigma_factor","additive_value"],"properties":{"ad'
      + 'ditive_value":{"type":"number"},"sigma_factor":{"type":"number"}}}}},"'
      + 'filter":{"type":"object","required":["angle","range_min","range_max","'
      + 'amplitude_max"],"properties":{"range_max":{"type":"array","description'
      + '":"[m]","items":{"type":"number"}},"amplitude_max":{"type":"array","de'
      + 'scription":"[dB]","items":{"type":"number"}},"angle":{"type":"array","'
      + 'description":"[deg]","items":{"type":"number"}},"range_min":{"type":"a'
      + 'rray","description":"[m]","items":{"type":"number"}}}}}}'
    );

    Example : (''
      + '{"result":{"range_mean":[0.1105621,0.1079564,0.1087088,0.1067261,0.105'
      + '4582,0.1090412,0.102871,0.1019044,0.1051523,0.1058445,0.1031261],"rang'
      + 'e_sigma":[0.01869652,0.02151435,0.01747969,0.01918765,0.01945776,0.019'
      + '34862,0.01955329,0.02225589,0.02229977,0.01899122,0.02009433],"amplitu'
      + 'de_sigma":[0.4272844,0.4298479,0.4236816,0.4283583,0.4362353,0.4315141'
      + ',0.4373984,0.4472798,0.4346001,0.4345487,0.4540681],"timestamp":[408.4'
      + '441,411.4443],"amplitude_offset":[1.9,1.9],"angle":[14.9,15.0,15.1,15.'
      + '2,15.3,15.4,15.5,15.6,15.7,15.8,15.9],"amplitude_mean":[5.347396,5.263'
      + '155,5.224655,5.179926,5.097782,5.116479,5.051756,4.983473,5.007885,5.0'
      + '02441,4.982]},"settings":{"range":{"additive_value":0.1,"sigma_factor"'
      + ':8},"amplitude":{"additive_value":1.0,"sigma_factor":4}},"filter":{"ra'
      + 'nge_max":[0.424,0.425,0.426,0.427,0.428,0.428,0.429,0.43,0.431,0.431,0'
      + '.432],"amplitude_max":[8.04,8.01,7.99,7.96,7.93,7.9,7.88,7.85,7.83,7.8'
      + ',7.78],"angle":[14.9,15.0,15.1,15.2,15.3,15.4,15.5,15.6,15.7,15.8,15.9'
      + '],"range_min":[-0.208,-0.21,-0.212,-0.214,-0.216,-0.218,-0.219,-0.221,'
      + '-0.223,-0.225,-0.227]}}'
    );
  );

// Correction parameters for window glass echoes
const
  RDB_RIEGL_WINDOW_ECHO_CORRECTION : TRDBPointcloudMetaDataItemInfo = (
    Name        : 'riegl.window_echo_correction';
    Title       : 'Window Echo Correction';
    Description : 'Correction parameters for window glass echoes';
    Status      : RDB_STATUS_OPTIONAL;

    Schema : (''
      + '{"description":"Correction parameters for window glass echoes","type":'
      + '"object","$schema":"http://json-schema.org/draft-04/schema#","title":"'
      + 'Window Echo Correction","required":["amplitude","range","slices"],"pro'
      + 'perties":{"range":{"type":"object","description":"Range axis of '
      + 'correction '
      + 'table","properties":{"maximum":{"type":"number","description":"Maximum'
      + ' range in m","maximum":2.0,"minimum":-2.0},"minimum":{"type":"number",'
      + '"description":"Minimum range in m","maximum":2.0,"minimum":-2.0},"entr'
      + 'ies":{"type":"integer","description":"Number of range entries","minimu'
      + 'm":1}},"required":["minimum","maximum","entries"]},"amplitude":{"type"'
      + ':"object","description":"Amplitude axis of correction '
      + 'table","properties":{"maximum":{"type":"number","description":"Maximum'
      + ' amplitude in '
      + 'dB","minimum":0.0},"minimum":{"type":"number","description":"Minimum '
      + 'amplitude in '
      + 'dB","minimum":0.0},"entries":{"type":"integer","description":"Number '
      + 'of amplitude entries","minimum":1}},"required":["minimum","maximum","e'
      + 'ntries"]},"slices":{"type":"array","items":{"type":"object","descripti'
      + 'on":"Window echo correction parameter slice","properties":{"amplitude"'
      + ':{"type":"number","description":"Window echo amplitude of slice in '
      + 'dB"},"table":{"type":"array","description":"Correction table '
      + '(dimension defined by the ''amplitude'' and ''range'' '
      + 'objects)","items":{"type":"array","description":"Table row (= '
      + 'amplitude axis)","items":{"type":"array","description":"Table column '
      + '(= range axis)","maxItems":3,"items":{"description":"Table cell (item '
      + '0: amplitude in dB, 1: range in m, 2: flags)","type":"number"},"minIte'
      + 'ms":3},"minItems":1},"minItems":1}},"required":["amplitude","table"]}}'
      + '}}'
    );

    Example : (''
      + '{"range":{"maximum":1.5060822940732335,"minimum":-1.5060822940732335,"'
      + 'entries":128},"amplitude":{"maximum":20,"minimum":2,"entries":128},"sl'
      + 'ices":[{"amplitude":1.5,"table":[[[6.23,0.3535,1]],[[5.54,0.72375,1]]]'
      + '},{"amplitude":2.0,"table":[[[6.23,0.3535,1]],[[5.54,0.72375,1]]]}]}'
    );
  );

// Table of all meta data item details records
const
  RDB_META_DATA_ITEMS : array of PRDBPointcloudMetaDataItemInfo = nil; // filled during initialization

implementation

procedure FixStringEncoding;
begin
  // As the unit (.pas file) doesn't contain a BOM, we need to convert all strings
  // from UTF-8 to "native" encoding at runtime (tested on Delphi 7 and Delphi XE5)

  RDB_RIEGL_ANGULAR_NOTCH_FILTER.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ANGULAR_NOTCH_FILTER.Name)));
  RDB_RIEGL_ANGULAR_NOTCH_FILTER.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ANGULAR_NOTCH_FILTER.Title)));
  RDB_RIEGL_ANGULAR_NOTCH_FILTER.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ANGULAR_NOTCH_FILTER.Description)));
  RDB_RIEGL_ANGULAR_NOTCH_FILTER.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ANGULAR_NOTCH_FILTER.Schema)));
  RDB_RIEGL_ANGULAR_NOTCH_FILTER.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ANGULAR_NOTCH_FILTER.Example)));

  RDB_RIEGL_ATMOSPHERE.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ATMOSPHERE.Name)));
  RDB_RIEGL_ATMOSPHERE.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ATMOSPHERE.Title)));
  RDB_RIEGL_ATMOSPHERE.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ATMOSPHERE.Description)));
  RDB_RIEGL_ATMOSPHERE.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ATMOSPHERE.Schema)));
  RDB_RIEGL_ATMOSPHERE.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ATMOSPHERE.Example)));

  RDB_RIEGL_BEAM_GEOMETRY.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_BEAM_GEOMETRY.Name)));
  RDB_RIEGL_BEAM_GEOMETRY.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_BEAM_GEOMETRY.Title)));
  RDB_RIEGL_BEAM_GEOMETRY.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_BEAM_GEOMETRY.Description)));
  RDB_RIEGL_BEAM_GEOMETRY.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_BEAM_GEOMETRY.Schema)));
  RDB_RIEGL_BEAM_GEOMETRY.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_BEAM_GEOMETRY.Example)));

  RDB_RIEGL_CONTROL_OBJECT_CATALOG.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_CATALOG.Name)));
  RDB_RIEGL_CONTROL_OBJECT_CATALOG.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_CATALOG.Title)));
  RDB_RIEGL_CONTROL_OBJECT_CATALOG.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_CATALOG.Description)));
  RDB_RIEGL_CONTROL_OBJECT_CATALOG.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_CATALOG.Schema)));
  RDB_RIEGL_CONTROL_OBJECT_CATALOG.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_CATALOG.Example)));

  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Name)));
  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Title)));
  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Description)));
  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Schema)));
  RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE.Example)));

  RDB_RIEGL_DETECTION_PROBABILITY.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DETECTION_PROBABILITY.Name)));
  RDB_RIEGL_DETECTION_PROBABILITY.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DETECTION_PROBABILITY.Title)));
  RDB_RIEGL_DETECTION_PROBABILITY.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DETECTION_PROBABILITY.Description)));
  RDB_RIEGL_DETECTION_PROBABILITY.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DETECTION_PROBABILITY.Schema)));
  RDB_RIEGL_DETECTION_PROBABILITY.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DETECTION_PROBABILITY.Example)));

  RDB_RIEGL_DEVICE.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE.Name)));
  RDB_RIEGL_DEVICE.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE.Title)));
  RDB_RIEGL_DEVICE.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE.Description)));
  RDB_RIEGL_DEVICE.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE.Schema)));
  RDB_RIEGL_DEVICE.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE.Example)));

  RDB_RIEGL_DEVICE_GEOMETRY.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY.Name)));
  RDB_RIEGL_DEVICE_GEOMETRY.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY.Title)));
  RDB_RIEGL_DEVICE_GEOMETRY.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY.Description)));
  RDB_RIEGL_DEVICE_GEOMETRY.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY.Schema)));
  RDB_RIEGL_DEVICE_GEOMETRY.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY.Example)));

  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Name)));
  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Title)));
  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Description)));
  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Schema)));
  RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL.Example)));

  RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Name)));
  RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Title)));
  RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Description)));
  RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Schema)));
  RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICE_OUTPUT_LIMITS.Example)));

  RDB_RIEGL_DEVICES.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICES.Name)));
  RDB_RIEGL_DEVICES.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICES.Title)));
  RDB_RIEGL_DEVICES.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICES.Description)));
  RDB_RIEGL_DEVICES.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICES.Schema)));
  RDB_RIEGL_DEVICES.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DEVICES.Example)));

  RDB_RIEGL_DMI_CONFIG.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DMI_CONFIG.Name)));
  RDB_RIEGL_DMI_CONFIG.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DMI_CONFIG.Title)));
  RDB_RIEGL_DMI_CONFIG.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DMI_CONFIG.Description)));
  RDB_RIEGL_DMI_CONFIG.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DMI_CONFIG.Schema)));
  RDB_RIEGL_DMI_CONFIG.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DMI_CONFIG.Example)));

  RDB_RIEGL_DYNTRIG.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DYNTRIG.Name)));
  RDB_RIEGL_DYNTRIG.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DYNTRIG.Title)));
  RDB_RIEGL_DYNTRIG.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DYNTRIG.Description)));
  RDB_RIEGL_DYNTRIG.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DYNTRIG.Schema)));
  RDB_RIEGL_DYNTRIG.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_DYNTRIG.Example)));

  RDB_RIEGL_ECHO_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ECHO_INFO.Name)));
  RDB_RIEGL_ECHO_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ECHO_INFO.Title)));
  RDB_RIEGL_ECHO_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ECHO_INFO.Description)));
  RDB_RIEGL_ECHO_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ECHO_INFO.Schema)));
  RDB_RIEGL_ECHO_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ECHO_INFO.Example)));

  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Name)));
  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Title)));
  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Description)));
  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Schema)));
  RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_EXPONENTIAL_DECOMPOSITION.Example)));

  RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Name)));
  RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Title)));
  RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Description)));
  RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Schema)));
  RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GAUSSIAN_DECOMPOSITION.Example)));

  RDB_RIEGL_GEO_TAG.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEO_TAG.Name)));
  RDB_RIEGL_GEO_TAG.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEO_TAG.Title)));
  RDB_RIEGL_GEO_TAG.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEO_TAG.Description)));
  RDB_RIEGL_GEO_TAG.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEO_TAG.Schema)));
  RDB_RIEGL_GEO_TAG.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEO_TAG.Example)));

  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Name)));
  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Title)));
  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Description)));
  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Schema)));
  RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOMETRIC_SCALE_FACTOR.Example)));

  RDB_RIEGL_GEOREFERENCING_PARAMETERS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOREFERENCING_PARAMETERS.Name)));
  RDB_RIEGL_GEOREFERENCING_PARAMETERS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOREFERENCING_PARAMETERS.Title)));
  RDB_RIEGL_GEOREFERENCING_PARAMETERS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOREFERENCING_PARAMETERS.Description)));
  RDB_RIEGL_GEOREFERENCING_PARAMETERS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOREFERENCING_PARAMETERS.Schema)));
  RDB_RIEGL_GEOREFERENCING_PARAMETERS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GEOREFERENCING_PARAMETERS.Example)));

  RDB_RIEGL_GNSS_PROCESSING_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GNSS_PROCESSING_INFO.Name)));
  RDB_RIEGL_GNSS_PROCESSING_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GNSS_PROCESSING_INFO.Title)));
  RDB_RIEGL_GNSS_PROCESSING_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GNSS_PROCESSING_INFO.Description)));
  RDB_RIEGL_GNSS_PROCESSING_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GNSS_PROCESSING_INFO.Schema)));
  RDB_RIEGL_GNSS_PROCESSING_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_GNSS_PROCESSING_INFO.Example)));

  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Name)));
  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Title)));
  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Description)));
  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Schema)));
  RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_IMPORTED_CONTROL_OBJECTS.Example)));

  RDB_RIEGL_ITEM_NAMES.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ITEM_NAMES.Name)));
  RDB_RIEGL_ITEM_NAMES.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ITEM_NAMES.Title)));
  RDB_RIEGL_ITEM_NAMES.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ITEM_NAMES.Description)));
  RDB_RIEGL_ITEM_NAMES.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ITEM_NAMES.Schema)));
  RDB_RIEGL_ITEM_NAMES.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_ITEM_NAMES.Example)));

  RDB_RIEGL_LAG_ANGLE_CORRECTION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LAG_ANGLE_CORRECTION.Name)));
  RDB_RIEGL_LAG_ANGLE_CORRECTION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LAG_ANGLE_CORRECTION.Title)));
  RDB_RIEGL_LAG_ANGLE_CORRECTION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LAG_ANGLE_CORRECTION.Description)));
  RDB_RIEGL_LAG_ANGLE_CORRECTION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LAG_ANGLE_CORRECTION.Schema)));
  RDB_RIEGL_LAG_ANGLE_CORRECTION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LAG_ANGLE_CORRECTION.Example)));

  RDB_RIEGL_LICENSES.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LICENSES.Name)));
  RDB_RIEGL_LICENSES.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LICENSES.Title)));
  RDB_RIEGL_LICENSES.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LICENSES.Description)));
  RDB_RIEGL_LICENSES.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LICENSES.Schema)));
  RDB_RIEGL_LICENSES.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_LICENSES.Example)));

  RDB_RIEGL_MTA_SETTINGS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_MTA_SETTINGS.Name)));
  RDB_RIEGL_MTA_SETTINGS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_MTA_SETTINGS.Title)));
  RDB_RIEGL_MTA_SETTINGS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_MTA_SETTINGS.Description)));
  RDB_RIEGL_MTA_SETTINGS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_MTA_SETTINGS.Schema)));
  RDB_RIEGL_MTA_SETTINGS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_MTA_SETTINGS.Example)));

  RDB_RIEGL_NEAR_RANGE_CORRECTION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NEAR_RANGE_CORRECTION.Name)));
  RDB_RIEGL_NEAR_RANGE_CORRECTION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NEAR_RANGE_CORRECTION.Title)));
  RDB_RIEGL_NEAR_RANGE_CORRECTION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NEAR_RANGE_CORRECTION.Description)));
  RDB_RIEGL_NEAR_RANGE_CORRECTION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NEAR_RANGE_CORRECTION.Schema)));
  RDB_RIEGL_NEAR_RANGE_CORRECTION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NEAR_RANGE_CORRECTION.Example)));

  RDB_RIEGL_NOISE_ESTIMATES.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOISE_ESTIMATES.Name)));
  RDB_RIEGL_NOISE_ESTIMATES.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOISE_ESTIMATES.Title)));
  RDB_RIEGL_NOISE_ESTIMATES.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOISE_ESTIMATES.Description)));
  RDB_RIEGL_NOISE_ESTIMATES.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOISE_ESTIMATES.Schema)));
  RDB_RIEGL_NOISE_ESTIMATES.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOISE_ESTIMATES.Example)));

  RDB_RIEGL_NOTCH_FILTER.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOTCH_FILTER.Name)));
  RDB_RIEGL_NOTCH_FILTER.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOTCH_FILTER.Title)));
  RDB_RIEGL_NOTCH_FILTER.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOTCH_FILTER.Description)));
  RDB_RIEGL_NOTCH_FILTER.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOTCH_FILTER.Schema)));
  RDB_RIEGL_NOTCH_FILTER.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_NOTCH_FILTER.Example)));

  RDB_RIEGL_PIXEL_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PIXEL_INFO.Name)));
  RDB_RIEGL_PIXEL_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PIXEL_INFO.Title)));
  RDB_RIEGL_PIXEL_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PIXEL_INFO.Description)));
  RDB_RIEGL_PIXEL_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PIXEL_INFO.Schema)));
  RDB_RIEGL_PIXEL_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PIXEL_INFO.Example)));

  RDB_RIEGL_PLANE_PATCH_MATCHING.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_MATCHING.Name)));
  RDB_RIEGL_PLANE_PATCH_MATCHING.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_MATCHING.Title)));
  RDB_RIEGL_PLANE_PATCH_MATCHING.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_MATCHING.Description)));
  RDB_RIEGL_PLANE_PATCH_MATCHING.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_MATCHING.Schema)));
  RDB_RIEGL_PLANE_PATCH_MATCHING.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_MATCHING.Example)));

  RDB_RIEGL_PLANE_PATCH_STATISTICS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_STATISTICS.Name)));
  RDB_RIEGL_PLANE_PATCH_STATISTICS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_STATISTICS.Title)));
  RDB_RIEGL_PLANE_PATCH_STATISTICS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_STATISTICS.Description)));
  RDB_RIEGL_PLANE_PATCH_STATISTICS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_STATISTICS.Schema)));
  RDB_RIEGL_PLANE_PATCH_STATISTICS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_PATCH_STATISTICS.Example)));

  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Name)));
  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Title)));
  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Description)));
  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Schema)));
  RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PLANE_SLOPE_CLASS_INFO.Example)));

  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Name)));
  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Title)));
  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Description)));
  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Schema)));
  RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINT_ATTRIBUTE_GROUPS.Example)));

  RDB_RIEGL_POINTCLOUD_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINTCLOUD_INFO.Name)));
  RDB_RIEGL_POINTCLOUD_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINTCLOUD_INFO.Title)));
  RDB_RIEGL_POINTCLOUD_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINTCLOUD_INFO.Description)));
  RDB_RIEGL_POINTCLOUD_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINTCLOUD_INFO.Schema)));
  RDB_RIEGL_POINTCLOUD_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POINTCLOUD_INFO.Example)));

  RDB_RIEGL_POSE_ESTIMATION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_ESTIMATION.Name)));
  RDB_RIEGL_POSE_ESTIMATION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_ESTIMATION.Title)));
  RDB_RIEGL_POSE_ESTIMATION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_ESTIMATION.Description)));
  RDB_RIEGL_POSE_ESTIMATION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_ESTIMATION.Schema)));
  RDB_RIEGL_POSE_ESTIMATION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_ESTIMATION.Example)));

  RDB_RIEGL_POSE_SENSORS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_SENSORS.Name)));
  RDB_RIEGL_POSE_SENSORS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_SENSORS.Title)));
  RDB_RIEGL_POSE_SENSORS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_SENSORS.Description)));
  RDB_RIEGL_POSE_SENSORS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_SENSORS.Schema)));
  RDB_RIEGL_POSE_SENSORS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_POSE_SENSORS.Example)));

  RDB_RIEGL_PULSE_POSITION_MODULATION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PULSE_POSITION_MODULATION.Name)));
  RDB_RIEGL_PULSE_POSITION_MODULATION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PULSE_POSITION_MODULATION.Title)));
  RDB_RIEGL_PULSE_POSITION_MODULATION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PULSE_POSITION_MODULATION.Description)));
  RDB_RIEGL_PULSE_POSITION_MODULATION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PULSE_POSITION_MODULATION.Schema)));
  RDB_RIEGL_PULSE_POSITION_MODULATION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_PULSE_POSITION_MODULATION.Example)));

  RDB_RIEGL_RANGE_STATISTICS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RANGE_STATISTICS.Name)));
  RDB_RIEGL_RANGE_STATISTICS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RANGE_STATISTICS.Title)));
  RDB_RIEGL_RANGE_STATISTICS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RANGE_STATISTICS.Description)));
  RDB_RIEGL_RANGE_STATISTICS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RANGE_STATISTICS.Schema)));
  RDB_RIEGL_RANGE_STATISTICS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RANGE_STATISTICS.Example)));

  RDB_RIEGL_RECEIVER_INTERNALS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RECEIVER_INTERNALS.Name)));
  RDB_RIEGL_RECEIVER_INTERNALS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RECEIVER_INTERNALS.Title)));
  RDB_RIEGL_RECEIVER_INTERNALS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RECEIVER_INTERNALS.Description)));
  RDB_RIEGL_RECEIVER_INTERNALS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RECEIVER_INTERNALS.Schema)));
  RDB_RIEGL_RECEIVER_INTERNALS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RECEIVER_INTERNALS.Example)));

  RDB_RIEGL_REFLECTANCE_CALCULATION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CALCULATION.Name)));
  RDB_RIEGL_REFLECTANCE_CALCULATION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CALCULATION.Title)));
  RDB_RIEGL_REFLECTANCE_CALCULATION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CALCULATION.Description)));
  RDB_RIEGL_REFLECTANCE_CALCULATION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CALCULATION.Schema)));
  RDB_RIEGL_REFLECTANCE_CALCULATION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CALCULATION.Example)));

  RDB_RIEGL_REFLECTANCE_CORRECTION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CORRECTION.Name)));
  RDB_RIEGL_REFLECTANCE_CORRECTION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CORRECTION.Title)));
  RDB_RIEGL_REFLECTANCE_CORRECTION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CORRECTION.Description)));
  RDB_RIEGL_REFLECTANCE_CORRECTION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CORRECTION.Schema)));
  RDB_RIEGL_REFLECTANCE_CORRECTION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_REFLECTANCE_CORRECTION.Example)));

  RDB_RIEGL_RILOC_PROCESSING_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RILOC_PROCESSING_INFO.Name)));
  RDB_RIEGL_RILOC_PROCESSING_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RILOC_PROCESSING_INFO.Title)));
  RDB_RIEGL_RILOC_PROCESSING_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RILOC_PROCESSING_INFO.Description)));
  RDB_RIEGL_RILOC_PROCESSING_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RILOC_PROCESSING_INFO.Schema)));
  RDB_RIEGL_RILOC_PROCESSING_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_RILOC_PROCESSING_INFO.Example)));

  RDB_RIEGL_SCAN_PATTERN.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SCAN_PATTERN.Name)));
  RDB_RIEGL_SCAN_PATTERN.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SCAN_PATTERN.Title)));
  RDB_RIEGL_SCAN_PATTERN.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SCAN_PATTERN.Description)));
  RDB_RIEGL_SCAN_PATTERN.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SCAN_PATTERN.Schema)));
  RDB_RIEGL_SCAN_PATTERN.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SCAN_PATTERN.Example)));

  RDB_RIEGL_SHOT_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SHOT_INFO.Name)));
  RDB_RIEGL_SHOT_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SHOT_INFO.Title)));
  RDB_RIEGL_SHOT_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SHOT_INFO.Description)));
  RDB_RIEGL_SHOT_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SHOT_INFO.Schema)));
  RDB_RIEGL_SHOT_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SHOT_INFO.Example)));

  RDB_RIEGL_STORED_FILTERS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_STORED_FILTERS.Name)));
  RDB_RIEGL_STORED_FILTERS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_STORED_FILTERS.Title)));
  RDB_RIEGL_STORED_FILTERS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_STORED_FILTERS.Description)));
  RDB_RIEGL_STORED_FILTERS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_STORED_FILTERS.Schema)));
  RDB_RIEGL_STORED_FILTERS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_STORED_FILTERS.Example)));

  RDB_RIEGL_SYSTEM_DESCRIPTION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SYSTEM_DESCRIPTION.Name)));
  RDB_RIEGL_SYSTEM_DESCRIPTION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SYSTEM_DESCRIPTION.Title)));
  RDB_RIEGL_SYSTEM_DESCRIPTION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SYSTEM_DESCRIPTION.Description)));
  RDB_RIEGL_SYSTEM_DESCRIPTION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SYSTEM_DESCRIPTION.Schema)));
  RDB_RIEGL_SYSTEM_DESCRIPTION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_SYSTEM_DESCRIPTION.Example)));

  RDB_RIEGL_TEMPERATURE_CALCULATION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TEMPERATURE_CALCULATION.Name)));
  RDB_RIEGL_TEMPERATURE_CALCULATION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TEMPERATURE_CALCULATION.Title)));
  RDB_RIEGL_TEMPERATURE_CALCULATION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TEMPERATURE_CALCULATION.Description)));
  RDB_RIEGL_TEMPERATURE_CALCULATION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TEMPERATURE_CALCULATION.Schema)));
  RDB_RIEGL_TEMPERATURE_CALCULATION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TEMPERATURE_CALCULATION.Example)));

  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Name)));
  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Title)));
  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Description)));
  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Schema)));
  RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE.Example)));

  RDB_RIEGL_TIME_BASE.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIME_BASE.Name)));
  RDB_RIEGL_TIME_BASE.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIME_BASE.Title)));
  RDB_RIEGL_TIME_BASE.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIME_BASE.Description)));
  RDB_RIEGL_TIME_BASE.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIME_BASE.Schema)));
  RDB_RIEGL_TIME_BASE.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TIME_BASE.Example)));

  RDB_RIEGL_TRAJECTORY_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TRAJECTORY_INFO.Name)));
  RDB_RIEGL_TRAJECTORY_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TRAJECTORY_INFO.Title)));
  RDB_RIEGL_TRAJECTORY_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TRAJECTORY_INFO.Description)));
  RDB_RIEGL_TRAJECTORY_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TRAJECTORY_INFO.Schema)));
  RDB_RIEGL_TRAJECTORY_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TRAJECTORY_INFO.Example)));

  RDB_RIEGL_TTIP_CONFIGURATION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TTIP_CONFIGURATION.Name)));
  RDB_RIEGL_TTIP_CONFIGURATION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TTIP_CONFIGURATION.Title)));
  RDB_RIEGL_TTIP_CONFIGURATION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TTIP_CONFIGURATION.Description)));
  RDB_RIEGL_TTIP_CONFIGURATION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TTIP_CONFIGURATION.Schema)));
  RDB_RIEGL_TTIP_CONFIGURATION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_TTIP_CONFIGURATION.Example)));

  RDB_RIEGL_VERTEX_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VERTEX_INFO.Name)));
  RDB_RIEGL_VERTEX_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VERTEX_INFO.Title)));
  RDB_RIEGL_VERTEX_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VERTEX_INFO.Description)));
  RDB_RIEGL_VERTEX_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VERTEX_INFO.Schema)));
  RDB_RIEGL_VERTEX_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VERTEX_INFO.Example)));

  RDB_RIEGL_VOXEL_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VOXEL_INFO.Name)));
  RDB_RIEGL_VOXEL_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VOXEL_INFO.Title)));
  RDB_RIEGL_VOXEL_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VOXEL_INFO.Description)));
  RDB_RIEGL_VOXEL_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VOXEL_INFO.Schema)));
  RDB_RIEGL_VOXEL_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_VOXEL_INFO.Example)));

  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Name)));
  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Title)));
  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Description)));
  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Schema)));
  RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS.Example)));

  RDB_RIEGL_WAVEFORM_INFO.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_INFO.Name)));
  RDB_RIEGL_WAVEFORM_INFO.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_INFO.Title)));
  RDB_RIEGL_WAVEFORM_INFO.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_INFO.Description)));
  RDB_RIEGL_WAVEFORM_INFO.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_INFO.Schema)));
  RDB_RIEGL_WAVEFORM_INFO.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_INFO.Example)));

  RDB_RIEGL_WAVEFORM_SETTINGS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_SETTINGS.Name)));
  RDB_RIEGL_WAVEFORM_SETTINGS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_SETTINGS.Title)));
  RDB_RIEGL_WAVEFORM_SETTINGS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_SETTINGS.Description)));
  RDB_RIEGL_WAVEFORM_SETTINGS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_SETTINGS.Schema)));
  RDB_RIEGL_WAVEFORM_SETTINGS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WAVEFORM_SETTINGS.Example)));

  RDB_RIEGL_WINDOW_ANALYSIS.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ANALYSIS.Name)));
  RDB_RIEGL_WINDOW_ANALYSIS.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ANALYSIS.Title)));
  RDB_RIEGL_WINDOW_ANALYSIS.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ANALYSIS.Description)));
  RDB_RIEGL_WINDOW_ANALYSIS.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ANALYSIS.Schema)));
  RDB_RIEGL_WINDOW_ANALYSIS.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ANALYSIS.Example)));

  RDB_RIEGL_WINDOW_ECHO_CORRECTION.Name        := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ECHO_CORRECTION.Name)));
  RDB_RIEGL_WINDOW_ECHO_CORRECTION.Title       := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ECHO_CORRECTION.Title)));
  RDB_RIEGL_WINDOW_ECHO_CORRECTION.Description := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ECHO_CORRECTION.Description)));
  RDB_RIEGL_WINDOW_ECHO_CORRECTION.Schema      := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ECHO_CORRECTION.Schema)));
  RDB_RIEGL_WINDOW_ECHO_CORRECTION.Example     := String(UTF8ToAnsi(AnsiString(RDB_RIEGL_WINDOW_ECHO_CORRECTION.Example)));
end;

procedure FillMetadataArray;
var
  i : Integer;
begin
  SetLength(RDB_META_DATA_ITEMS, 58); i := -1;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_ANGULAR_NOTCH_FILTER;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_ATMOSPHERE;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_BEAM_GEOMETRY;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_CONTROL_OBJECT_CATALOG;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_CONTROL_OBJECT_REFERENCE_FILE;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DETECTION_PROBABILITY;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DEVICE;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DEVICE_GEOMETRY;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DEVICE_GEOMETRY_PASSIVE_CHANNEL;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DEVICE_OUTPUT_LIMITS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DEVICES;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DMI_CONFIG;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_DYNTRIG;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_ECHO_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_EXPONENTIAL_DECOMPOSITION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_GAUSSIAN_DECOMPOSITION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_GEO_TAG;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_GEOMETRIC_SCALE_FACTOR;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_GEOREFERENCING_PARAMETERS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_GNSS_PROCESSING_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_IMPORTED_CONTROL_OBJECTS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_ITEM_NAMES;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_LAG_ANGLE_CORRECTION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_LICENSES;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_MTA_SETTINGS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_NEAR_RANGE_CORRECTION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_NOISE_ESTIMATES;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_NOTCH_FILTER;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_PIXEL_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_PLANE_PATCH_MATCHING;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_PLANE_PATCH_STATISTICS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_PLANE_SLOPE_CLASS_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_POINT_ATTRIBUTE_GROUPS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_POINTCLOUD_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_POSE_ESTIMATION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_POSE_SENSORS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_PULSE_POSITION_MODULATION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_RANGE_STATISTICS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_RECEIVER_INTERNALS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_REFLECTANCE_CALCULATION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_REFLECTANCE_CORRECTION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_RILOC_PROCESSING_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_SCAN_PATTERN;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_SHOT_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_STORED_FILTERS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_SYSTEM_DESCRIPTION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_TEMPERATURE_CALCULATION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_TIE_OBJECT_REFERENCE_FILE;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_TIME_BASE;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_TRAJECTORY_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_TTIP_CONFIGURATION;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_VERTEX_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_VOXEL_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_WAVEFORM_AVERAGING_SETTINGS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_WAVEFORM_INFO;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_WAVEFORM_SETTINGS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_WINDOW_ANALYSIS;
  Inc(i); RDB_META_DATA_ITEMS[i] := @RDB_RIEGL_WINDOW_ECHO_CORRECTION;
end;

initialization

FixStringEncoding;
FillMetadataArray;

end.
