{
    "version": "1.4.12",
    "date": "2026-05-27",
    "attributes": [
        {
            "name": "riegl.xyz",
            "title": "XYZ",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Cartesian point coordinates wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -535000.0,
            "maximum_value": 535000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.xyz_socs",
            "title": "XYZ SOCS",
            "group": "Coordinates/Vectors",
            "tags": "position",
            "description": "Cartesian point coordinates wrt. scanner's coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -535000.0,
            "maximum_value": 535000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.xyz_lvcs",
            "title": "XYZ LVCS",
            "group": "Coordinates/Vectors",
            "tags": "position",
            "description": "Cartesian point coordinates wrt. levelled vehicle coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.1,
            "minimum_value": -10000.0,
            "maximum_value": 10000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.xyz_map",
            "title": "XYZ Map",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Point coordinates wrt. a projected CRS (e.g. Web Mercator EPSG:3857, 0: Easting, 1: Northing, 2: Height)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -20037508.343,
            "maximum_value": 20037508.343,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "easting": 0,
                "northing": 1,
                "height": 2
            }
        },
        {
            "name": "riegl.xyz_map_min",
            "title": "XYZ Map Minimum",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Minimum distances to the voxel corner (0: dx, 1: dy, 2: dz)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.xyz_map_max",
            "title": "XYZ Map Maximum",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Maximum distances to the voxel corner (0: dx, 1: dy, 2: dz)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.xy_map",
            "title": "XY Map",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Point coordinates wrt. a projected CRS (e.g. Web Mercator EPSG:3857, 0: Easting, 1: Northing)",
            "unit_symbol": "m",
            "length": 2,
            "resolution": 0.00933069192934280443318950659659094526432454586029052734375,
            "minimum_value": -20037508.3427892439067363739013671875,
            "maximum_value": 20037508.333458550274372100830078125,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "easting": 0,
                "northing": 1
            }
        },
        {
            "name": "riegl.xyz_corrections",
            "title": "XYZ Corrections",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Corrections that were applied (added) to the Cartesian point coordinates (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -5000.0,
            "maximum_value": 5000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.range",
            "title": "Range",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Target distance wrt. SOCS origin",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.theta",
            "title": "Theta",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Polar angle (inclination) wrt. SOCS (0..180°)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.phi",
            "title": "Phi",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Azimuthal angle wrt. SOCS (0..360°)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.scanner_position",
            "title": "Scanner Position",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Cartesian coordinates of the scanner position wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -535000.0,
            "maximum_value": 535000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.direction",
            "title": "Direction",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Laser beam direction vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.direction_medium",
            "title": "Direction",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Laser beam direction vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 0.0007,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.direction_coarse",
            "title": "Direction",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Coarse laser beam direction vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 0.015,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.shot_origin",
            "title": "Laser Shot Origin",
            "group": "Coordinates/Vectors",
            "tags": "position",
            "description": "Laser beam origin wrt. SOCS (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 250.0e-6,
            "minimum_value": -8.0,
            "maximum_value": 8.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.shot_biaxial_shift",
            "title": "Laser Shot Biaxial Shift",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Laser beam biaxial shift vector wrt. SOCS (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 250.0e-6,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.shot_direction",
            "title": "Laser Shot Direction",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Laser beam direction vector wrt. SOCS (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 250.0e-9,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.shot_direction_levelled",
            "title": "Laser Shot Direction Levelled",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Laser beam direction vector wrt. ROCS (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 250.0e-9,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.surface_normal",
            "title": "Surface Normal",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Target surface normal vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.point_vector",
            "title": "Point Vector",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Vector derived from PCA on neighborhood: normal vector for planar and volumetric neighborhoods, direction vector for linear neighborhoods",
            "unit_symbol": "",
            "length": 3,
            "resolution": 0.0005,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.plane_up",
            "title": "Plane Patch Up Vector",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Direction vector of shorter edge of plane patch wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.plane_cog_link",
            "title": "Plane COG Link Vector",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Vector connecting the center point of a plane patch with its center of gravity (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -5000.0,
            "maximum_value": 5000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.plane_patch_link_vector",
            "title": "Plane Patch Link Vector",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Vector interconnecting the centers (riegl.xyz) of two matched plane patches (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -5000.0,
            "maximum_value": 5000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.pca_axis_min",
            "title": "PCA Axis Minimum",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "The eigenvector that belongs to the smallest eigenvalue (result of PCA, 0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.pca_axis_max",
            "title": "PCA Axis Maximum",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "The eigenvector that belongs to the greatest eigenvalue (result of PCA, 0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.model_cs_axis_x",
            "title": "Model CS X-Axis",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Direction of x-axis of model coordinate system wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.model_cs_axis_y",
            "title": "Model CS Y-Axis",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Direction of y-axis of model coordinate system wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.model_cs_axis_z",
            "title": "Model CS Z-Axis",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Direction of z-axis of model coordinate system wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.cylinder_axis_direction",
            "title": "Cylinder Axis Direction",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Normalized cylinder axis direction vector",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.accelerometer",
            "title": "Accelerometer Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Processed values of an accelerometer",
            "unit_symbol": "m/s²",
            "length": 3,
            "resolution": 5.0e-6,
            "minimum_value": -300.0,
            "maximum_value": 300.0,
            "default_value": -300.0,
            "invalid_value": -300.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.accelerometer_raw",
            "title": "Accelerometer Raw Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Raw measurement values of an accelerometer (unit see metadata riegl.pose_sensors)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 1.0,
            "minimum_value": -32768.0,
            "maximum_value": 32767.0,
            "default_value": -32768.0,
            "invalid_value": -32768.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.accelerometer_bias",
            "title": "Accelerometer Bias",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Estimated bias of accelerometer",
            "unit_symbol": "m/s²",
            "length": 3,
            "resolution": 1e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.accelerometer_scale",
            "title": "Accelerometer Scale",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Estimated deviation of scale of accelerometer from 1",
            "unit_symbol": "1",
            "length": 3,
            "resolution": 1e-06,
            "minimum_value": -0.1,
            "maximum_value": 0.1,
            "default_value": 0.0,
            "invalid_value": -0.1,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.gyroscope",
            "title": "Gyroscope Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Processed values of a gyroscope",
            "unit_symbol": "deg/s",
            "length": 3,
            "resolution": 1.0e-7,
            "minimum_value": -2000.0,
            "maximum_value": 2000.0,
            "default_value": -2000.0,
            "invalid_value": -2000.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.gyroscope_raw",
            "title": "Gyroscope Raw Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Raw measurement values of a gyroscope (unit see metadata riegl.pose_sensors)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 1.0,
            "minimum_value": -32768.0,
            "maximum_value": 32767.0,
            "default_value": -32768.0,
            "invalid_value": -32768.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.gyroscope_bias",
            "title": "Gyroscope Bias",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Estimated bias of gyroscope",
            "unit_symbol": "deg/s",
            "length": 3,
            "resolution": 1e-06,
            "minimum_value": -10.0,
            "maximum_value": 10.0,
            "default_value": 0.0,
            "invalid_value": -10.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.gyroscope_scale",
            "title": "Gyroscope Scale",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Estimated deviation of scale of gyroscope from 1",
            "unit_symbol": "1",
            "length": 3,
            "resolution": 1e-06,
            "minimum_value": -0.1,
            "maximum_value": 0.1,
            "default_value": 0.0,
            "invalid_value": -0.1,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.magnetic_field_sensor",
            "title": "Magnetic Field Sensor Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Processed values of a magnetic field sensor",
            "unit_symbol": "µT",
            "length": 3,
            "resolution": 0.01,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": -1000.0,
            "invalid_value": -1000.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.magnetic_field_sensor_raw",
            "title": "Magnetic Field Sensor Raw Values",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Raw measurement values of a magnetic field sensor (unit see metadata riegl.pose_sensors)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 1.0,
            "minimum_value": -32768.0,
            "maximum_value": 32767.0,
            "default_value": -32768.0,
            "invalid_value": -32768.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_latitude",
            "title": "Latitude",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Geodetic (Geographic) Latitude",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-9,
            "minimum_value": -90.0,
            "maximum_value": 90.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0,
            "constants": {
                "north": 90.0,
                "south": -90.0
            }
        },
        {
            "name": "riegl.pof_longitude",
            "title": "Longitude",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Geodetic (Geographic) Longitude",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-9,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0,
            "constants": {
                "east": 180.0,
                "west": -180.0
            }
        },
        {
            "name": "riegl.pof_height",
            "title": "Ellipsoidal Height",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Height (vertical distance) wrt. to the ellipsoid of the defined geodetic datum",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 250.0e-6,
            "minimum_value": -10000.0,
            "maximum_value": 40000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_undulation",
            "title": "Geoid Undulation",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Height of the geoid relative to the ellipsoid",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -300.0,
            "maximum_value": 300.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_roll",
            "title": "Roll Angle",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about the body axis pointing in forward direction (x-axis for NED systems)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_pitch",
            "title": "Pitch Angle",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about the body axis pointing in transverse direction (y-axis for NED systems)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_yaw",
            "title": "Yaw Angle",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about the body axis pointing in vertical direction (z-axis for NED systems)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_course",
            "title": "Course Angle",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "2D angle of the course over ground (0 deg: north, 90 deg: east)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -1.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_xyz",
            "title": "XYZ",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Position of the platform in the coordinate system defined by the geo_tag (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -535000.0,
            "maximum_value": 535000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.pof_roll_ned",
            "title": "Roll Angle NED",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about y-axis of the coordinate system defined by the geo_tag",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_pitch_ned",
            "title": "Pitch Angle NED",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about x-axis of the coordinate system defined by the geo_tag",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_yaw_ned",
            "title": "Yaw Angle NED",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation about inverted z-axis of the coordinate system defined by the geo_tag",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_xyz_velocity",
            "title": "XYZ Velocity",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Time-smoothed velocity vector of the platform in the body coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m/s",
            "length": 3,
            "resolution": 0.01,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_xyz_ned_velocity",
            "title": "XYZ NED Velocity",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Time-smoothed velocity vector of the platform in the local NED system (0: N, 1: E, 2: D)",
            "unit_symbol": "m/s",
            "length": 3,
            "resolution": 0.01,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_xyz_lvcs_velocity",
            "title": "XYZ LVCS Velocity",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Time-smoothed velocity vector of the platform wrt. levelled vehicle coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m/s",
            "length": 3,
            "resolution": 0.01,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_roll_velocity",
            "title": "Roll Angle Velocity",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation velocity about x-axis of the body coordinate system",
            "unit_symbol": "deg/s",
            "length": 1,
            "resolution": 0.05,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_pitch_velocity",
            "title": "Pitch Angle Velocity",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation velocity about y-axis of the body coordinate system",
            "unit_symbol": "deg/s",
            "length": 1,
            "resolution": 0.05,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_yaw_velocity",
            "title": "Yaw Angle Velocity",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Rotation velocity about z-axis of the body coordinate system",
            "unit_symbol": "deg/s",
            "length": 1,
            "resolution": 0.05,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_ned",
            "title": "Velocity NED",
            "group": "Coordinates/Vectors",
            "tags": "direction",
            "description": "Velocity vector in the local NED system (0: N, 1: E, 2: D)",
            "unit_symbol": "m/s",
            "length": 3,
            "resolution": 0.001,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_north",
            "title": "Velocity Accuracy North",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in North direction (standard deviation)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_east",
            "title": "Velocity Accuracy East",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in East direction (standard deviation)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_down",
            "title": "Velocity Accuracy Down",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in Down direction (standard deviation)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_north_east",
            "title": "Velocity Accuracy North/East",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in North/East direction (signed square root of covariance)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_east_down",
            "title": "Velocity Accuracy East/Down",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in East/Down direction (signed square root of covariance)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_velocity_accuracy_down_north",
            "title": "Velocity Accuracy Down/North",
            "group": "Coordinates/Vectors",
            "tags": "",
            "description": "Accuracy of Velocity in Down/North direction (signed square root of covariance)",
            "unit_symbol": "m/s",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -200.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.hydro_intersection_point",
            "title": "Water Surface Intersection Point",
            "group": "Coordinates/Vectors",
            "tags": "position, transform",
            "description": "Water surface intersection point coordinates wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -535000.0,
            "maximum_value": 535000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.hydro_intersection_normal",
            "title": "Water Surface Intersection Normal",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Water surface intersection normal vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.hydro_wsm_uncertainty",
            "title": "Water Surface Model Uncertainty",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Water surface model uncertainty (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.0001,
            "minimum_value": -3.2768,
            "maximum_value": 3.2767,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "x": 0,
                "y": 1,
                "z": 2
            }
        },
        {
            "name": "riegl.xyz_accuracies",
            "title": "XYZ Accuracies",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Accuracy of Cartesian coordinates (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.zenith_vector",
            "title": "Zenith Vector",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Direction of zenith vector wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 3.125e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.marker_extents",
            "title": "Marker Extents",
            "group": "Coordinates/Vectors",
            "tags": "direction, transform",
            "description": "Extents of placemark wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.shot_timestamp_hr",
            "title": "Laser Shot Timestamp",
            "group": "Time",
            "tags": "timestamp",
            "description": "Laser shot timestamp (in units of 4 pico seconds = 4e-12 s)",
            "unit_symbol": "4ps",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 9.0e18,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "resolution": 4.0e-12
            }
        },
        {
            "name": "riegl.timestamp",
            "title": "Timestamp",
            "group": "Time",
            "tags": "timestamp",
            "description": "Laser shot timestamp (100 nano seconds resolution)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1.0e-7,
            "minimum_value": 0.0,
            "maximum_value": 9.0e8,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sbl_time_offset",
            "title": "Waveform Sample Block Time Offset",
            "group": "Time",
            "tags": "",
            "description": "Start of waveform sample block relative to laser shot timestamp (in units of 4 pico seconds = 4e-12 s)",
            "unit_symbol": "4ps",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -2.0e9,
            "maximum_value": 2.0e9,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "resolution": 4.0e-12
            }
        },
        {
            "name": "riegl.wfm_echo_time_offset",
            "title": "Echo Time Offset",
            "group": "Time",
            "tags": "",
            "description": "Position of echo relative to start of waveform sample block (in units of 4 pico seconds = 4e-12 s)",
            "unit_symbol": "4ps",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -2.0e9,
            "maximum_value": 2.0e9,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "resolution": 4.0e-12
            }
        },
        {
            "name": "riegl.pps_timestamp_extern",
            "title": "External Timestamp",
            "group": "Time",
            "tags": "timestamp",
            "description": "External timestamp (100 nano seconds resolution)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1.0e-7,
            "minimum_value": 0.0,
            "maximum_value": 9.0e8,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pps_timestamp_intern",
            "title": "Internal Timestamp",
            "group": "Time",
            "tags": "",
            "description": "Internal timestamp (in units of 4 pico seconds = 4e-12 s)",
            "unit_symbol": "4ps",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 9.0e18,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "resolution": 4.0e-12
            }
        },
        {
            "name": "riegl.event_timestamp",
            "title": "Event Timestamp",
            "group": "Time",
            "tags": "timestamp",
            "description": "Timestamp of event (seconds since epoch defined in riegl.time_base)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1e-07,
            "minimum_value": 0.0,
            "maximum_value": 900000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.timestamp_min",
            "title": "Timestamp Minimum",
            "group": "Time",
            "tags": "timestamp",
            "description": "Minimum laser shot timestamp within voxel (100 nano seconds resolution)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1.0e-7,
            "minimum_value": 0.0,
            "maximum_value": 9.0e8,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.timestamp_max",
            "title": "Timestamp Maximum",
            "group": "Time",
            "tags": "timestamp",
            "description": "Maximum laser shot timestamp within voxel (100 nano seconds resolution)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1.0e-7,
            "minimum_value": 0.0,
            "maximum_value": 9.0e8,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_timestamp",
            "title": "Timestamp",
            "group": "Time",
            "tags": "timestamp",
            "description": "Timestamp (100 nano seconds resolution)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1.0e-7,
            "minimum_value": 0.0,
            "maximum_value": 9.0e8,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.acquisition_date",
            "title": "Acquisition Date",
            "group": "Time",
            "tags": "",
            "description": "Date of acquisition (0: year, 1: month [1-12], 2: day [1-31], not specified if any is 0)",
            "unit_symbol": "",
            "length": 3,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4095.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "year": 0,
                "month": 1,
                "day": 2
            }
        },
        {
            "name": "riegl.sample_interval",
            "title": "Sample Interval",
            "group": "Time",
            "tags": "",
            "description": "Difference between successive measurement timestamps (in seconds)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 1e-07,
            "minimum_value": -1.0,
            "maximum_value": 900000000.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.reflectance",
            "title": "Reflectance",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Target surface reflectance",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": -327.68,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.amplitude",
            "title": "Amplitude",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Echo signal amplitude",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": -327.68,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.intensity",
            "title": "Intensity",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Uncalibrated echo signal amplitude (for legacy RIEGL LMS instruments)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.gain",
            "title": "Gain",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Gain of photodiode",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.deviation",
            "title": "Deviation",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Pulse shape deviation (negative means unavailable)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 32767.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unavailable": -1
            }
        },
        {
            "name": "riegl.pulse_width",
            "title": "Pulse Width",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Pulse width (full width at half maximum, for Q-Series instruments, 0 = invalid)",
            "unit_symbol": "ns",
            "length": 1,
            "resolution": 0.1,
            "minimum_value": 0.0,
            "maximum_value": 6553.5,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0.0
            }
        },
        {
            "name": "riegl.class",
            "title": "Point Class",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Point class number",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "Created, never classified"
            },
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.rgba",
            "title": "True Color",
            "group": "Primary Attributes",
            "tags": "color",
            "description": "Point color derived from digital camera, 0: Red, 1: Green, 2: Blue, 3: Alpha (0 = no color); additional colors (if any) are stored in riegl.rgba_2, riegl.rgba_3, ...",
            "unit_symbol": "",
            "length": 4,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "red": 0,
                "green": 1,
                "blue": 2,
                "alpha": 3
            }
        },
        {
            "name": "riegl.nir",
            "title": "Near Infrared Brightness",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Point near infrared (NIR) value derived from NIR camera",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.temperature",
            "title": "Temperature",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Target temperature measured by thermal camera",
            "unit_symbol": "°C",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -273.15,
            "maximum_value": 4.0e6,
            "default_value": 4.0e6,
            "invalid_value": 4.0e6,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.dmi_count",
            "title": "DMI Counter Value",
            "group": "Primary Attributes",
            "tags": "",
            "description": "DMI counter value (unwrapped)",
            "unit_symbol": "1",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -100000000000.0,
            "maximum_value": 100000000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.dmi_path_length_raw",
            "title": "DMI Path Length",
            "group": "Primary Attributes",
            "tags": "",
            "description": "DMI path length (uncalibrated)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -10000000.0,
            "maximum_value": 10000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.dmi_scale",
            "title": "DMI Scale",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Estimated deviation of scale of DMI from 1 with respect to the riegl.dmi_path_length_raw attribute in the dmix file",
            "unit_symbol": "1",
            "length": 1,
            "resolution": 1e-05,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mta_zone",
            "title": "MTA Zone Assigned",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Index of assigned MTA zone. Nearest MTA zone has index 1",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 1.0,
            "maximum_value": 255.0,
            "default_value": 1.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mta_uncertain_point",
            "title": "MTA Uncertain Point",
            "group": "Primary Attributes",
            "tags": "boolean",
            "description": "1 for points with uncertain MTA zone assignment, 0 for certainly assigned MTA zone",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.fwa",
            "title": "Full Waveform Analysis",
            "group": "Primary Attributes",
            "tags": "boolean",
            "description": "1 for all points originating from a full waveform analysis (FWA), 0 for all points originating from online waveform processing (OWP)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "Origin OWP",
                "1": "Origin FWA"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "online_waveform_processing": 0,
                "full_waveform_analysis": 1
            }
        },
        {
            "name": "riegl.background_radiation",
            "title": "Background Radiation",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Background Radiation (for VZ-400-HT/HAT only)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.background_radiation_si",
            "title": "Background Radiation Si-PD",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Background Radiation (for VZ-400-HTo only, Si-PD)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": 65535.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.background_radiation_ingaas",
            "title": "Background Radiation InGaAs-PD",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Background Radiation (for VZ-400-HTo only, InGaAs-PD)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": 65535.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.temperature_estimated_si",
            "title": "Temperature Estimated Si-PD",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Estimated temperature derived from Background Radiation Si-PD",
            "unit_symbol": "°C",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 2000.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.temperature_estimated_ingaas",
            "title": "Temperature Estimated InGaAs-PD",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Estimated temperature derived from Background Radiation InGaAs-PD",
            "unit_symbol": "°C",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 2000.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.temperature_estimated_ingaas_si",
            "title": "Temperature Estimated InGaAs/Si-PD",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Estimated temperature derived from difference in Background Radiation InGaAs and Si",
            "unit_symbol": "°C",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 2000.0,
            "default_value": 0.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.target_index",
            "title": "Target Index",
            "group": "Primary Attributes",
            "tags": "",
            "description": "nth target of a laser-shot (0 = unknown, 1 = first target, ...)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 1.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.target_count",
            "title": "Target Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of targets of a laser-shot (0 = unknown, 1 = one target, ...)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 1.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.target_type",
            "title": "Target Type",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Target rank among all targets of a laser-shot (0 = unknown, 1 = single, 2 = first, 3 = intermediate, 4 = last target)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "named_values": {
                "1": "Single target",
                "2": "First target",
                "3": "Intermediate target",
                "4": "Last target"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0,
                "single": 1,
                "first": 2,
                "intermediate": 3,
                "last": 4
            }
        },
        {
            "name": "riegl.echo_first",
            "title": "Echo First",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Identifier of first echo that belongs to the laser shot (0 = invalid). This is not an array index but the value of riegl.id of the echo.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.echo_count",
            "title": "Echo Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of echoes that belong to the laser shot",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.height_center",
            "title": "Height Center",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Height at center of grid cell",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -100000.0,
            "maximum_value": 100000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.height_mean",
            "title": "Height Mean",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Mean height within grid cell",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -100000.0,
            "maximum_value": 100000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.height_min",
            "title": "Height Minimum",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Minimum height within grid cell",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -100000.0,
            "maximum_value": 100000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.height_max",
            "title": "Height Maximum",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Maximum height within grid cell",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -100000.0,
            "maximum_value": 100000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.point_count",
            "title": "Point Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of points this point represents (e.g. points combined to voxels or plane patches, 0 = unknown)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.point_count_grid_cell",
            "title": "Point Count of Grid Cell",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of total points in a grid cell this point represents.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.pca_extents",
            "title": "PCA Extents",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Volume extents along 0: riegl.pca_axis_max, 1: riegl.pca_axis_min x riegl.pca_axis_max, 2: riegl.pca_axis_min",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mta_uncertain_point_vol",
            "title": "MTA Uncertain Point Volume",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Representative volume of the neighborhood, calculated as product of the components of riegl.pca_extents",
            "unit_symbol": "dBm³",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -120.0,
            "maximum_value": 120.0,
            "default_value": 0.0,
            "invalid_value": -120.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mta_uncertain_point_vol_diff",
            "title": "Difference in MTA Uncertain Point Volume",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Difference in representative volume of the neighborhood to next smallest volume of point from the same echo but different MTA-zone",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 240.0,
            "default_value": 240.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pca_thickness",
            "title": "PCA Thickness",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Volume extents along riegl.pca_axis_min or riegl.surface_normal (result of PCA)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pca_diameter",
            "title": "PCA Diameter of Neighborhood",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Representative diameter of the neighborhood, calculated as sqrt(12*sum_of_eigenvalues/number_of_points)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.eigenvalue_norm_min",
            "title": "PCA Minimum Eigen Value Normalized",
            "group": "Primary Attributes",
            "tags": "",
            "description": "The smallest eigenvalue from PCA normalized by the sum of all eigenvalues",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.52591e-05,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.eigenvalue_norm_max",
            "title": "PCA Maximum Eigen Value Normalized",
            "group": "Primary Attributes",
            "tags": "",
            "description": "The largest eigenvalue from PCA normalized by the sum of all eigenvalues",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.52591e-05,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.std_dev",
            "title": "Standard Deviation",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Standard deviation, e.g. of residual point-to-plane distances (0 = unknown)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.0001,
            "minimum_value": 0.0,
            "maximum_value": 65.535,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0.0
            }
        },
        {
            "name": "riegl.plane_confidence_normal",
            "title": "Confidence Normal Direction",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence ellipse for the normal vector of a plane patch (0: up-axis, 1: width-axis, tilt angle wrt. up-axis)",
            "unit_symbol": "deg",
            "length": 3,
            "resolution": 0.006,
            "minimum_value": -180.006,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": -180.006,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.plane_slope_class",
            "title": "Plane Patch Slope Class",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Plane patch slope class number. Meaning see metadata riegl.plane_slope_class_info (0 = invalid)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.plane_occupancy",
            "title": "Plane Patch Occupancy",
            "group": "Primary Attributes",
            "tags": "",
            "description": "8x8 occupancy matrix indicating point support of plane patch",
            "unit_symbol": "",
            "length": 8,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.plane_width",
            "title": "Plane Patch Width",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Size of plane patch along the longer edge (0 = unknown)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0.0
            }
        },
        {
            "name": "riegl.plane_height",
            "title": "Plane Patch Height",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Size of plane patch along the shorter edge (0 = unknown)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0.0
            }
        },
        {
            "name": "riegl.plane_count",
            "title": "Plane Patch Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "For merged plane patches, the number of plane patches the merged plane patch is based on",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 1.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.match_count",
            "title": "Plane Patch Match Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "The number of source plane patch files the plane patch has matches to",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.plane_patch_distance",
            "title": "Plane Patch Distance",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Distance between the origins of two plane patches, projected onto the average of their normal vectors",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -2100.0,
            "maximum_value": 2000.0,
            "default_value": -2100.0,
            "invalid_value": -2100.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "lowest": -2000.0
            }
        },
        {
            "name": "riegl.plane_patch_lateral_distance",
            "title": "Plane Patch Lateral Distance",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Distance between the origins of two plane patches, projected onto the plane defined by the average of their normal vectors",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -2100.0,
            "maximum_value": 2000.0,
            "default_value": -2100.0,
            "invalid_value": -2100.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "lowest": -2000.0
            }
        },
        {
            "name": "riegl.plane_patch_angular_distance",
            "title": "Plane Patch Angular Distance",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Angle between the normal vectors of two plane patches",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -1.0,
            "maximum_value": 180.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_radius",
            "title": "Cylinder Radius",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Radius of cylinder",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_height",
            "title": "Cylinder Height",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Height of cylinder (cylinder origin is at half height)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_origin_confidence",
            "title": "Cylinder Origin Confidence",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of estimated cylinder origin (perpendicular to axis)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.0001,
            "minimum_value": 0.0,
            "maximum_value": 10.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_radius_confidence",
            "title": "Cylinder Radius Confidence",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of estimated cylinder radius",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.0001,
            "minimum_value": 0.0,
            "maximum_value": 10.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_direction_confidence",
            "title": "Cylinder Direction Confidence",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of estimated cylinder axis direction",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.003,
            "minimum_value": 0.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_inlier_count",
            "title": "Cylinder Inlier Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of points used for cylinder fitting",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1,
            "minimum_value": 0.0,
            "maximum_value": 16000000,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cylinder_outlier_count",
            "title": "Cylinder Outlier Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of points not used for cylinder fitting",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1,
            "minimum_value": 0.0,
            "maximum_value": 16000000,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_north",
            "title": "Accuracy North",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in North direction (standard deviation)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_east",
            "title": "Accuracy East",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in East direction (standard deviation)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_down",
            "title": "Accuracy Down",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in Down direction (standard deviation)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_north_east",
            "title": "Accuracy North/East",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in North/East direction (signed square root of covariance)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_east_down",
            "title": "Accuracy East/Down",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in East/Down direction (signed square root of covariance)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_down_north",
            "title": "Accuracy Down/North",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy in Down/North direction (signed square root of covariance)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_roll",
            "title": "Accuracy Roll",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy of Roll rotation",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_pitch",
            "title": "Accuracy Pitch",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy of Pitch rotation",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_accuracy_yaw",
            "title": "Accuracy Yaw",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Accuracy of Yaw rotation",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1.0e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sbl_channel",
            "title": "Waveform Sample Block Channel",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Waveform sample block channel number (255 = invalid)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 255.0,
            "invalid_value": 255.0,
            "named_values": {
                "0": "High power",
                "1": "Low power",
                "3": "Reference pulse"
            },
            "storage_class": "constant",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 255
            }
        },
        {
            "name": "riegl.wfm_sbl_mean",
            "title": "Waveform Sample Value Mean",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Waveform sample value mean",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.0625,
            "minimum_value": 0.0,
            "maximum_value": 4095.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sbl_std_dev",
            "title": "Waveform Sample Value Standard Deviation",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Waveform sample value standard deviation",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.25,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sbl_first",
            "title": "Waveform Sample Block First",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Identifier of first waveform sample block that belongs to the laser shot (0 = invalid). This is not an array index but the value of riegl.id of the block.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.wfm_sbl_count",
            "title": "Waveform Sample Block Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of waveform sample blocks that belong to the laser shot",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sda_first",
            "title": "Waveform Sample Data First",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Identifier of first waveform sample value that belongs to the sample block (0 = invalid). This is not an array index but the value of riegl.id of the sample.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.wfm_sda_count",
            "title": "Waveform Sample Data Count",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of waveform sample values that belong to the sample block",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.wfm_sample_value",
            "title": "Waveform Sample Value",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Raw waveform sample value",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.control_object_type",
            "title": "Control Object Type",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Zero-based index of control object type listed in riegl.control_object_catalog (meta data entry)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 32767.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.model_fit_quality",
            "title": "Model Fit Quality",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Model fit quality value between 0 and 1 (0 = unspecified)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cp_surface_inclination_angle",
            "title": "Surface Inclination Angle",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Observed inclination angle of the surface in the vicinity of a control point. It is defined as the arccosine of the vertical component of the surface normal vector. Hence: angle = 0 deg: horizontal (floor); angle = 90 deg: vertical (wall); angle = 180 deg: horizontal (ceiling)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "floor": 0.0,
                "wall": 90.0,
                "ceiling": 180.0
            }
        },
        {
            "name": "riegl.cp_surface_inclination_tolerance_angle",
            "title": "Surface Inclination Tolerance Angle",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Tolerance angle for the inclination of the surface in the vicinity of a control point",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 180.0,
            "default_value": 180.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cp_surface_northing_angle",
            "title": "Surface Northing Angle",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Observed northing angle (azimuth) of the surface in the vicinity of a control point. It is defined as the angle of the horizontal component of the surface normal vector wrt. north direction (measured clockwise). Hence: 0 deg: North; 90 deg: East; 180 deg: South; 270 deg: West",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cp_surface_northing_tolerance_angle",
            "title": "Surface Northing Tolerance Angle",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Tolerance angle for the northing angle of the surface in the vicinity of a control point",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 180.0,
            "default_value": 180.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_xyz",
            "title": "XYZ Confidences of Observed Point",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence values of observed XYZ point coordinates wrt. local observation coordinate system",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_xy",
            "title": "XY Confidence of Observed Point",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence value for xy position of observed point wrt. local observation coordinate system",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_z",
            "title": "Z Confidence of Observed Point",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence value for z position of observed point wrt. local observation coordinate system",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_range",
            "title": "Positional Confidence of Observation in Radial Direction",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of observation coordinates in local radial direction (range)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_theta",
            "title": "Positional Confidence of Observation in Theta Direction",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of observation coordinates in local elevation direction (theta)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_confidence_phi",
            "title": "Positional Confidence of Observation in Phi Direction",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence of observation coordinates in local azimuth direction (phi)",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.obs_signal_confidence_rot",
            "title": "Rotation Angle Confidence of Observed Signal",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Confidence value for rotation angle within plane of observed signal",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1e-06,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.used_for_adjustment",
            "title": "Used for Adjustment",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Flag indicating if observation shall be used for adjustment (0 = used as verification point; 1 = used for adjustment)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 1.0,
            "invalid_value": null,
            "named_values": {
                "0": "Used as verification point",
                "1": "Used for adjustment"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "verification": 0,
                "adjustment": 1
            }
        },
        {
            "name": "riegl.used_as_control",
            "title": "Used as Control",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Flag indicating if object shall be used as tie object or as control object (0 = used as tie object; 1 = used as control object)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 1.0,
            "invalid_value": null,
            "named_values": {
                "0": "Used as tie object",
                "1": "Used as control object"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.reference_object_id",
            "title": "Reference Object ID",
            "group": "Primary Attributes",
            "tags": "",
            "description": "ID (riegl.id) of a referenced object (0 = invalid)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.event_index",
            "title": "Event Index",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Number of events in specific channel, separate counters for input and output",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.event_pulse_width",
            "title": "Event Pulse Width",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Width of input pulse (0 = output pulse)",
            "unit_symbol": "ms",
            "length": 1,
            "resolution": 0.1,
            "minimum_value": 0.0,
            "maximum_value": 6553.5,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.marker_size",
            "title": "Marker Size",
            "group": "Primary Attributes",
            "tags": "",
            "description": "Size of marker; meaning depends on application",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.marker_type",
            "title": "Marker Type",
            "group": "Primary Attributes",
            "tags": "enumeration",
            "description": "Type of marker; default icons can be found at: http://maps.riegl.com/kml/{type_name}.png",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "anchor",
                "1": "arrow1",
                "2": "arrow2",
                "3": "arrow3",
                "4": "arrow4",
                "5": "arrow5",
                "6": "checkmark",
                "7": "diamond",
                "8": "feather",
                "9": "flag1",
                "10": "flag2",
                "11": "flag3",
                "12": "flash",
                "13": "ice-cream",
                "14": "paddle",
                "15": "pencil",
                "16": "pushpin1",
                "17": "pushpin2",
                "18": "pushpin3",
                "19": "pushpin4",
                "20": "pushpin5",
                "21": "flag1-1",
                "22": "flag1-2",
                "23": "flag1-3",
                "24": "flag1-4",
                "25": "flag1-5",
                "26": "flag1-6",
                "27": "flag1-7",
                "28": "flag1-8",
                "29": "flag1-9",
                "30": "flag2-1",
                "31": "flag2-2",
                "32": "flag2-3",
                "33": "flag2-4",
                "34": "flag2-5",
                "35": "flag2-6",
                "36": "flag2-7",
                "37": "flag2-8",
                "38": "flag2-9",
                "39": "flag3-1",
                "40": "flag3-2",
                "41": "flag3-3",
                "42": "flag3-4",
                "43": "flag3-5",
                "44": "flag3-6",
                "45": "flag3-7",
                "46": "flag3-8",
                "47": "flag3-9"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.raw_range",
            "title": "Raw Range",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Raw range of echo",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": -50000.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.raw_line_angle",
            "title": "Raw Line Angle",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Raw line angle",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.raw_frame_angle",
            "title": "Raw Frame Angle",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Raw frame angle",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 1e-6,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.line_angle_coarse",
            "title": "Line Angle Coarse",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Coarse line scan angle",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.025,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.line_angle_reduced",
            "title": "Line Angle Reduced",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Reduced line scan angle",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.025,
            "minimum_value": -360.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.frame_angle_coarse",
            "title": "Frame Angle Coarse",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Coarse frame scan angle",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": 0.0,
            "maximum_value": 360.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.angle_of_incidence",
            "title": "Angle of Incidence",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Angle of incidence of the laser beam with respect to a planar neighborhood, normal incidence gives 0 deg",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 90.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.scan_line_index",
            "title": "Scan Line Index",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Scan Line Index in Scan",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -2000000000.0,
            "maximum_value": 2000000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.shot_index_line",
            "title": "Laser Shot Index in Line",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Laser Shot Index in Scan Line",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -2000000000.0,
            "maximum_value": 2000000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mirror_facet",
            "title": "Mirror Facet",
            "group": "Secondary Attributes",
            "tags": "enumeration",
            "description": "Mirror facet number (0 = invalid, 1 = first facet, ...)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 15.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.scan_segment",
            "title": "Scan Segment",
            "group": "Secondary Attributes",
            "tags": "enumeration",
            "description": "Scan segment number (0 = invalid, 1 = first segment, ...)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 15.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.waveform_available",
            "title": "Waveform Available",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "Waveform data available for laser-shot (0 = no, 1 = yes)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "No waveform available",
                "1": "Waveform available"
            },
            "storage_class": "constant",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.hydro_refraction_corrected",
            "title": "Refraction Corrected",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "1 if the point was refraction corrected, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "No refraction correction applied",
                "1": "Refraction correction applied"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.extinction",
            "title": "Extinction Coefficient",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Extinction coefficient, i.e. exponential damping coefficient usually present in water bodies. N.B.: The factor is subject to refraction correction.",
            "unit_symbol": "dB/m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -30.0,
            "maximum_value": 30.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_amplitude_volumetric",
            "title": "SVB Volumetric Backscatter Amplitude",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Amplitude from volumetric backscatter in SVB FWA",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_reflectance_volumetric",
            "title": "SVB Volumetric Backscatter Reflectance",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Reflectance from volumetric backscatter in SVB FWA",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_reflectance_bottom_uncorrected",
            "title": "SVB Bottom Reflectance Uncorrected",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Reflectance in SVB FWA of bottom return without correcting for the attenuation of the water column",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -327.68,
            "maximum_value": 327.67,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_attenuation_volumetric",
            "title": "SVB Attenuation of Bottom Return",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Attenuation of the reflectance of bottom target due to backscatter and absorption in the water column in SVB FWA",
            "unit_symbol": "dB",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_target_attenuation_coefficient_volumetric",
            "title": "SVB Target Attenuation Coefficient",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Bottom target amplitude is attenuated by svb_target_attenuation_coefficient_volumetric for every additional meter of target depth in the water column.",
            "unit_symbol": "dB/m",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.svb_surface",
            "title": "SVB Surface Point",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "Indicates surface point from SVB FWA (1 = surface)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.svb_bottom",
            "title": "SVB Bottom Point",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "Indicates bottom point from SVB FWA (1 = bottom)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.svb_path_length",
            "title": "SVB Path Length",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Path length between surface and bottom from SVB FWA",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.004,
            "minimum_value": 0.0,
            "maximum_value": 200.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.start_of_scan_line",
            "title": "Start of Scan Line",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "1 for all points of the first laser shot of a scan line, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.end_of_scan_line",
            "title": "End of Scan Line",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "1 for all points of the last laser shot of a scan line, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.scan_angle",
            "title": "Scan Angle",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "see LAS format specification 1.4-R13",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.006,
            "minimum_value": -180.0,
            "maximum_value": 180.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.scan_direction",
            "title": "Scan Direction",
            "group": "Secondary Attributes",
            "tags": "enumeration",
            "description": "see LAS format specification 1.4-R13",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "Negative",
                "1": "Positive"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.voxel_collapsed",
            "title": "Voxel Collapsed with Neighbor",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "Voxel has been collapsed with neighbor (0 = not collapsed, 1 = collapsed)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.voxel_saturated",
            "title": "Voxel Saturated",
            "group": "Secondary Attributes",
            "tags": "boolean",
            "description": "Voxel is saturated and left-over points have been discarded (0 = not saturated, 1 = saturated)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.line_scan_active",
            "title": "Line Scan Active",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "1 if the mirror wheel rotates, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.frame_scan_active",
            "title": "Frame Scan Active",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "1 if the scanner head rotates, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.data_acquisition_active",
            "title": "Data Acquisition Active",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "1 if the data acquisition is in progress, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": -1.0,
            "maximum_value": 1.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.plane_references",
            "title": "Plane Patch References",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "IDs (riegl.id) of plane patches this observation refers to (0 = invalid)",
            "unit_symbol": "",
            "length": 2,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.pof_path_length",
            "title": "Path Length",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Cumulative distance travelled",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 1.0e-3,
            "minimum_value": 0.0,
            "maximum_value": 4.0e6,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta+shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_pdop",
            "title": "PDOP",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Position (3D) dilution of precision",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_hdop",
            "title": "HDOP",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Horizontal dilution of precision",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_vdop",
            "title": "VDOP",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Vertical dilution of precision",
            "unit_symbol": "",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 100.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_age_of_corrections",
            "title": "Age Of Corrections",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Age of GNSS RTK corrections (-1 = unknown)",
            "unit_symbol": "s",
            "length": 1,
            "resolution": 0.1,
            "minimum_value": -1.0,
            "maximum_value": 1000.0,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_baseline_length",
            "title": "Baseline Length",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Length of GNSS RTK baseline, i.e. the distance between the antennas of the base station and the rover",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.1,
            "minimum_value": 0.0,
            "maximum_value": 1000000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_solution_gnss",
            "title": "GNSS Solution",
            "group": "Secondary Attributes",
            "tags": "enumeration",
            "description": "Solution type of GNSS",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 8.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "named_values": {
                "0": "GNSS fix invalid",
                "1": "GNSS fix single",
                "2": "GNSS fix DGPS",
                "3": "GNSS fix time only",
                "4": "GNSS fix RTK fixed",
                "5": "GNSS fix RTK float",
                "6": "GNSS fix estimated",
                "7": "GNSS fix manual",
                "8": "GNSS fix simulated"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_separation_gnss",
            "title": "GNSS Forward-Backward Separation",
            "group": "Secondary Attributes",
            "tags": "direction, transform",
            "description": "Separation (difference) between forward-backward GNSS solution, wrt. application coordinate system (0: X, 1: Y, 2: Z)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.00025,
            "minimum_value": -1000.0,
            "maximum_value": 1000.0,
            "default_value": -1000.0,
            "invalid_value": -1000.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_gnss",
            "title": "Number of GNSS Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Total number of GNSS satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_gps",
            "title": "Number of GPS Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of GPS satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_glonass",
            "title": "Number of GLONASS Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of GLONASS satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_beidou",
            "title": "Number of Beidou Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of Beidou satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_galileo",
            "title": "Number of Galileo Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of Galileo satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pof_satellites_qzss",
            "title": "Number of QZSS Satellites",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of Quasi-Zenith Satellite System (QZSS) satellites that were used to calculate the position",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.pixel_linear_sums",
            "title": "Linear Sums",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Sums of the linear point distances to the pixel corner (0: dx, 1: dy, 2: dz)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 1e-3,
            "minimum_value": 0.0,
            "maximum_value": 64000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "dx": 0,
                "dy": 1,
                "dz": 2
            }
        },
        {
            "name": "riegl.pixel_square_sums",
            "title": "Square Sums",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Sums of the square point distances to the pixel corner (0: dx*dx, 1: dy*dy, 2: dz*dz, 3: dx*dy, 4: dy*dz, 5: dx*dz)",
            "unit_symbol": "m²",
            "length": 6,
            "resolution": 1e-6,
            "minimum_value": 0.0,
            "maximum_value": 5120000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "dx_dx": 0,
                "dy_dy": 1,
                "dz_dz": 2,
                "dx_dy": 3,
                "dy_dz": 4,
                "dx_dz": 5
            }
        },
        {
            "name": "riegl.shape_id",
            "title": "Point Cloud Shape",
            "group": "Secondary Attributes",
            "tags": "enumeration",
            "description": "Estimated shape of point cloud (0 = undefined, 1 = plane, 2 = line, 3 = volume)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 3.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "named_values": {
                "0": "Undefined",
                "1": "Plane",
                "2": "Line",
                "3": "Volume"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "undefined": 0,
                "plane": 1,
                "line": 2,
                "volume": 3
            }
        },
        {
            "name": "riegl.plane_cluster_id",
            "title": "Plane Cluster ID",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "The plane cluster ID this point belongs to (0 = no cluster)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4000000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.segment_id",
            "title": "Segment ID",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "The segment ID this point belongs to (0 = no segment)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4000000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.voxel_linear_sums",
            "title": "Linear Sums",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Sums of the linear point distances to the voxel corner (0: dx, 1: dy, 2: dz)",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 2.5e-4,
            "minimum_value": 0.0,
            "maximum_value": 16000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "dx": 0,
                "dy": 1,
                "dz": 2
            }
        },
        {
            "name": "riegl.voxel_square_sums",
            "title": "Square Sums",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Sums of the square point distances to the voxel corner (0: dx*dx, 1: dy*dy, 2: dz*dz, 3: dx*dy, 4: dy*dz, 5: dx*dz)",
            "unit_symbol": "m²",
            "length": 6,
            "resolution": 6.25e-8,
            "minimum_value": 0.0,
            "maximum_value": 320000000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "dx_dx": 0,
                "dy_dy": 1,
                "dz_dz": 2,
                "dx_dy": 3,
                "dy_dz": 4,
                "dx_dz": 5
            }
        },
        {
            "name": "riegl.voxel_index",
            "title": "Voxel Index",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Integer coordinates of voxel corner",
            "unit_symbol": "",
            "length": 3,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.covariances",
            "title": "Point Cloud Covariances",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Elements 00, 11, 22, 10, 21 and 20 (in that order) of point cloud covariance matrix",
            "unit_symbol": "",
            "length": 6,
            "resolution": 1.0e-6,
            "minimum_value": -4.5e9,
            "maximum_value": 4.5e9,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.voxel_count",
            "title": "Voxel Count",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of voxels this point represents (e.g. voxels combined to pixels, 0 = unknown)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.id",
            "title": "PID",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Point identifier, unique within database (0 = invalid)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.vertex_first",
            "title": "Vertex First",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Identifier of first vertex that belongs to a geometry object (e.g. polyline) (0 = invalid)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.vertex_count",
            "title": "Vertex Count",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Number of vertices that belong to a geometry object (e.g. polyline)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.cp_search_radius",
            "title": "Search Radius",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Search radius for finding the control point in the scan data. This value (if valid) shall be preferred over that of the common settings when finding observation points for the respective control point.",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": 0.0,
            "maximum_value": 655.35,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0.0
            }
        },
        {
            "name": "riegl.cp_maximum_distance",
            "title": "Maximum Distance",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Maximum accepted distance of an observed control point from SOCS center. This value (if valid) shall be preferred over that of the common settings when finding observation points for the respective control point.",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.1,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0.0
            }
        },
        {
            "name": "riegl.group_index",
            "title": "Group Index",
            "group": "Secondary Attributes",
            "tags": "",
            "description": "Items in the same group share the same group index (0: no group)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 4294967295.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.selected",
            "title": "Selected",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Point selected by user (0 = not selected, 1 = selected)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "dynamic",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.visible",
            "title": "Visible",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Point visible (i.e. not hidden) in view (0 = hidden, 1 = visible)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 1.0,
            "invalid_value": null,
            "storage_class": "dynamic",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.source_cloud_id",
            "title": "Point Cloud ID",
            "group": "Other Attributes",
            "tags": "",
            "description": "ID of original point cloud (0 = unknown)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 10000.0,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.source_cloud_count",
            "title": "Point Cloud Count",
            "group": "Other Attributes",
            "tags": "",
            "description": "For points merged from multiple source files, the number of source files contributing to the point (0 = unknown)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 65535.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.source_index",
            "title": "Point Index",
            "group": "Other Attributes",
            "tags": "",
            "description": "Index of point in original point cloud (0 = unknown)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "unknown": 0
            }
        },
        {
            "name": "riegl.source_indicator",
            "title": "Source Indicator",
            "group": "Other Attributes",
            "tags": "enumeration",
            "description": "0 for all points derived by standard waveform processing, 1 for additional points derived from interpolation, other enum values to be defined separately",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 255.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "Standard processing",
                "1": "Target interpolation"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "standard_processing": 0,
                "target_interpolation": 1
            }
        },
        {
            "name": "riegl.dynamic_object_point",
            "title": "Dynamic Object Point",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Marks points that belong to dynamic objects (0 = no dynamic object, 1 = dynamic object)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.single_source_point",
            "title": "Single Source Point",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Marks points that originate from one source file (0 = multiple source files, 1 = single source file)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 1.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.mirror_object_point",
            "title": "Mirror Object Point",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Marks points that belong to mirror objects (0 = no mirror object, 1 = mirror object)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.isolated_point",
            "title": "Isolated Point",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Marks isolated points (0 = non-isolated point, 1 = isolated point)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.window_echo_impact_corrected",
            "title": "Window Echo Impact Corrected",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "1 for all points in temporal vicinity of echoes from the exit aperture and corrected for the impact of the exit pane on amplitude and range, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "Not impacted by exit aperture",
                "1": "Impacted by exit aperture"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.dyntrig_uncertain_point",
            "title": "Dyntrig Uncertain Point",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "1 for all points with an echo signal amplitude below the dynamic trigger level, 0 otherwise",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0,
            "constants": {
                "false": 0,
                "true": 1
            }
        },
        {
            "name": "riegl.barometric_height_amsl",
            "title": "Barometric Altitude",
            "group": "Other Attributes",
            "tags": "",
            "description": "Altitude determined based on the atmospheric pressure according to the standard atmosphere laws",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.01,
            "minimum_value": -100.0,
            "maximum_value": 10000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "delta",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.distance_to_surface",
            "title": "Distance to Surface",
            "group": "Other Attributes",
            "tags": "",
            "description": "Distance between point and a reference surface (values less than -2000.0 mean no distance available)",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.0001,
            "minimum_value": -2100.0,
            "maximum_value": 2000.0,
            "default_value": -2100.0,
            "invalid_value": -2100.0,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0,
            "constants": {
                "lowest": -2000.0
            }
        },
        {
            "name": "riegl.nbhd_distance_min",
            "title": "Neighborhood Minimum Distance",
            "group": "Other Attributes",
            "tags": "",
            "description": "Minimum distance to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.nbhd_distance_max",
            "title": "Neighborhood Maximum Distance",
            "group": "Other Attributes",
            "tags": "",
            "description": "Maximum distance to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.nbhd_distance_mean",
            "title": "Neighborhood Mean Distance",
            "group": "Other Attributes",
            "tags": "",
            "description": "Mean distance to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.nbhd_distance_median",
            "title": "Neighborhood Median Distance",
            "group": "Other Attributes",
            "tags": "",
            "description": "Median distance to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.nbhd_distance_std",
            "title": "Neighborhood Distance, Standard Deviation",
            "group": "Other Attributes",
            "tags": "",
            "description": "Standard deviation of distances to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.nbhd_distance_mad",
            "title": "Neighborhood Distance, Median Absolute Deviation",
            "group": "Other Attributes",
            "tags": "",
            "description": "MAD standard deviation of distances to points in neighborhood",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.00025,
            "minimum_value": 0.0,
            "maximum_value": 50000.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "shuffle",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.shot_id",
            "title": "Shot ID",
            "group": "Other Attributes",
            "tags": "",
            "description": "Identifier of laser shot (0 = invalid). This is not an array index but the value of riegl.id of the laser shot.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.wfm_sbl_id",
            "title": "Waveform Sample Block ID",
            "group": "Other Attributes",
            "tags": "",
            "description": "Identifier of waveform sample block (0 = invalid). This is not an array index but the value of riegl.id of the block.",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0e12,
            "default_value": 0.0,
            "invalid_value": 0.0,
            "storage_class": "constant",
            "compression_options": "delta",
            "scale_factor": 1.0,
            "constants": {
                "invalid": 0
            }
        },
        {
            "name": "riegl.event_fake_pulse",
            "title": "Event Fake Pulse",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "Event fake pulse (0 = real input event, 1 = fake input event to indicate that no event was detected within set time window)",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "named_values": {
                "0": "real input event",
                "1": "fake input event"
            },
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.point_inside_aabb_bocs",
            "title": "Inside Inner AABB in BOCS",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "1 if point is inside inner box, 0 if outside",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.point_outside_aabb_bocs",
            "title": "Outside Outer AABB in BOCS",
            "group": "Other Attributes",
            "tags": "boolean",
            "description": "1 if point is outside outer box, 0 if inside",
            "unit_symbol": "",
            "length": 1,
            "resolution": 1.0,
            "minimum_value": 0.0,
            "maximum_value": 1.0,
            "default_value": 0.0,
            "invalid_value": null,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.tpu_wsm_z_uncertainty",
            "title": "Water Surface Model Z Uncertainty",
            "group": "Other Attributes",
            "tags": "",
            "description": "Water surface model z uncertainty at intersection point",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -1.0,
            "maximum_value": 64.535,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.tpu_wsm_normal_uncertainty",
            "title": "Water Surface Model Normal Uncertainty",
            "group": "Other Attributes",
            "tags": "",
            "description": "Water surface model normal uncertainty at intersection point",
            "unit_symbol": "deg",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -1.0,
            "maximum_value": 64.535,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.tpu_xyz_uncertainties",
            "title": "XYZ Uncertainties",
            "group": "Other Attributes",
            "tags": "",
            "description": "Uncertainties of Cartesian coordinates (0: X, 1: Y, 2: Z) resulting from uncertainty propagation based on contributing systematic and random measurement uncertainties from several sources",
            "unit_symbol": "m",
            "length": 3,
            "resolution": 0.001,
            "minimum_value": -1.0,
            "maximum_value": 64.535,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.tpu_thu",
            "title": "Total Horizontal Uncertainty",
            "group": "Other Attributes",
            "tags": "",
            "description": "Total Horizontal Uncertainty (THU) at a confidence level of 95% derived from x- and y-component of xyz uncertainties",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -1.0,
            "maximum_value": 64.535,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        },
        {
            "name": "riegl.tpu_tvu",
            "title": "Total Vertical Uncertainty",
            "group": "Other Attributes",
            "tags": "",
            "description": "Total Vertical Uncertainty (TVU) at a confidence level of 95% derived from z-component of xyz uncertainties",
            "unit_symbol": "m",
            "length": 1,
            "resolution": 0.001,
            "minimum_value": -1.0,
            "maximum_value": 64.535,
            "default_value": -1.0,
            "invalid_value": -1.0,
            "storage_class": "variable",
            "compression_options": "default",
            "scale_factor": 1.0
        }
    ]
}
