#
#*******************************************************************************
#
#  Copyright 2022 RIEGL Laser Measurement Systems
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  SPDX-License-Identifier: Apache-2.0
#
#*******************************************************************************
#
"""
*******************************************************************************
*
* \author RIEGL LMS GmbH, Austria
* \brief  Description of RIEGL RDB 2 database file contents
*
*  NOTE: All information in this file is preliminary, since the
*        definition of the database schemas is not yet complete.
*
*******************************************************************************
"""

# File schema version
RDB_SCHEMA_VERSION = "7476cf6f"
RDB_SCHEMA_DATE = "2022-11-09"

# Schema for ".avg.fwa" files
RDB_SCHEMA_RIEGL_AVG_FWA = (
"{\"identifier\":\"avg.fwa\",\"extension\":\"avg.fwa\",\"attributes\":[\"riegl.id*"
"\",\"riegl.amplitude\",\"riegl.gain\",\"riegl.raw_range\",\"riegl.wfm_echo_tim"
"e_offset\",\"riegl.wfm_sbl_id\",\"riegl.deviation?\",\"riegl.pulse_width?\"],"
"\"metadata\":[]}"
)

# Schema for ".avg.sbx" files
RDB_SCHEMA_RIEGL_AVG_SBX = (
"{\"identifier\":\"avg.sbx\",\"extension\":\"avg.sbx\",\"attributes\":[\"riegl.id*"
"\",\"riegl.wfm_sbl_channel\",\"riegl.wfm_sbl_mean\",\"riegl.wfm_sbl_std_dev\""
",\"riegl.wfm_sbl_time_offset\",\"riegl.wfm_sda_first\",\"riegl.wfm_sda_coun"
"t\"],\"metadata\":[]}"
)

# Schema for ".avg.sidx" files
RDB_SCHEMA_RIEGL_AVG_SIDX = (
"{\"identifier\":\"avg.sidx\",\"extension\":\"avg.sidx\",\"attributes\":[\"riegl.i"
"d\",\"riegl.shot_timestamp_hr*\",\"riegl.wfm_sbl_first\",\"riegl.wfm_sbl_cou"
"nt\",\"riegl.echo_first?\",\"riegl.echo_count?\"],\"metadata\":[\"riegl.shot_i"
"nfo\",\"riegl.waveform_info\",\"riegl.echo_info?\",\"riegl.waveform_averagin"
"g_settings\"]}"
)

# Schema for ".avg.sp{C}" files
RDB_SCHEMA_RIEGL_AVG_SPC = (
"{\"identifier\":\"avg.sp{C}\",\"extension\":\"avg.sp{C}\",\"attributes\":[\"riegl"
".id*\",\"riegl.wfm_sample_value\"],\"metadata\":[]}"
)

# Schema for ".cpx" files
RDB_SCHEMA_RIEGL_CPX = (
"{\"identifier\":\"cpx\",\"extension\":\"cpx\",\"attributes\":[\"riegl.id\",\"riegl."
"xyz*\",\"riegl.xyz_accuracies\",\"riegl.control_object_type\",\"riegl.zenith"
"_vector\",\"riegl.used_for_adjustment\",\"riegl.acquisition_date?\",\"riegl."
"cp_surface_inclination_angle\",\"riegl.cp_surface_inclination_tolerance_"
"angle\",\"riegl.cp_search_radius?\",\"riegl.cp_maximum_distance?\",\"riegl.i"
"mport_line_number\"],\"metadata\":[\"riegl.geo_tag\",\"riegl.control_object_"
"catalog\",\"riegl.item_names\",\"riegl.imported_files\"]}"
)

# Schema for ".doix" files
RDB_SCHEMA_RIEGL_DOIX = (
"{\"identifier\":\"doix\",\"extension\":\"doix\",\"attributes\":[\"riegl.id\",\"rieg"
"l.shot_origin\",\"riegl.shot_direction*\",\"riegl.scan_line_index\",\"riegl."
"shot_index_line\"],\"metadata\":[]}"
)

# Schema for ".fwa" files
RDB_SCHEMA_RIEGL_FWA = (
"{\"identifier\":\"fwa\",\"extension\":\"fwa\",\"attributes\":[\"riegl.id*\",\"riegl"
".amplitude\",\"riegl.gain\",\"riegl.raw_range\",\"riegl.wfm_echo_time_offset"
"\",\"riegl.wfm_sbl_id\",\"riegl.deviation?\",\"riegl.pulse_width?\"],\"metadat"
"a\":[]}"
)

# Schema for ".mpx" files
RDB_SCHEMA_RIEGL_MPX = (
"{\"identifier\":\"mpx\",\"extension\":\"mpx\",\"attributes\":[\"riegl.id\",\"riegl."
"xy_map*\",\"riegl.amplitude\",\"riegl.reflectance\",\"riegl.deviation\",\"rieg"
"l.timestamp_min?\",\"riegl.timestamp_max?\",\"riegl.point_count\",\"riegl.po"
"int_count_grid_cell\",\"riegl.pixel_linear_sums?\",\"riegl.pixel_square_su"
"ms?\",\"riegl.height_min\",\"riegl.height_max\",\"riegl.height_mean\",\"riegl."
"height_center\",\"riegl.surface_normal\",\"riegl.pca_thickness\",\"riegl.std"
"_dev\",\"riegl.voxel_count\"],\"metadata\":[\"riegl.geo_tag\",\"riegl.pixel_in"
"fo\",\"riegl.time_base?\"]}"
)

# Schema for ".mtch" files
RDB_SCHEMA_RIEGL_MTCH = (
"{\"identifier\":\"mtch\",\"extension\":\"mtch\",\"attributes\":[\"riegl.xyz*\",\"ri"
"egl.plane_references\",\"riegl.plane_patch_distance\",\"riegl.plane_patch_"
"lateral_distance\",\"riegl.plane_patch_link_vector\",\"riegl.id\"],\"metadat"
"a\":[\"riegl.plane_patch_matching\"]}"
)

# Schema for ".mvx" files
RDB_SCHEMA_RIEGL_MVX = (
"{\"identifier\":\"mvx\",\"extension\":\"mvx\",\"attributes\":[\"riegl.id\",\"riegl."
"xyz_map*\",\"riegl.amplitude\",\"riegl.reflectance\",\"riegl.deviation\",\"rie"
"gl.timestamp_min?\",\"riegl.timestamp_max?\",\"riegl.point_count\",\"riegl.s"
"hape_id\",\"riegl.covariances?\",\"riegl.pca_axis_min\",\"riegl.pca_axis_max"
"\",\"riegl.pca_extents\",\"riegl.std_dev\",\"riegl.voxel_collapsed\"],\"metada"
"ta\":[\"riegl.geo_tag\",\"riegl.time_base?\",\"riegl.voxel_info\"]}"
)

# Schema for ".obsx" files
RDB_SCHEMA_RIEGL_OBSX = (
"{\"identifier\":\"obsx\",\"extension\":\"obsx\",\"attributes\":[\"riegl.xyz\",\"rie"
"gl.surface_normal\",\"riegl.plane_slope_class?\",\"riegl.id*\",\"riegl.sda1_"
"plane_patch_one\",\"riegl.sda1_plane_patch_two\",\"riegl.sda1_source_file_"
"one\",\"riegl.sda1_source_file_two\"],\"metadata\":[\"riegl.geo_tag\",\"riegl."
"plane_slope_class_info?\",\"riegl.pointcloud_info\",\"riegl.sda1_source_fi"
"les\"]}"
)

# Schema for ".opefx" files
RDB_SCHEMA_RIEGL_OPEFX = (
"{\"identifier\":\"opefx\",\"extension\":\"opefx\",\"attributes\":[\"riegl.id\",\"ri"
"egl.xyz*\",\"riegl.xyz_accuracies?\",\"riegl.surface_normal\",\"riegl.plane_"
"up\",\"riegl.point_count\",\"riegl.std_dev\",\"riegl.plane_width\",\"riegl.pla"
"ne_height\",\"riegl.plane_confidence_normal\",\"riegl.model_fit_quality?\","
"\"riegl.used_for_adjustment\",\"riegl.xyz_socs\",\"riegl.timestamp\",\"riegl."
"mirror_facet\",\"riegl.platform_rpy_ROCS_NED\",\"riegl.platform_drpy_ROCS_"
"NED\",\"riegl.platform_xyz_ROCS_ENU\",\"riegl.platform_dxyz_ROCS_ENU\",\"rie"
"gl.sda.shift_vector\",\"riegl.raw_range\",\"riegl.raw_frame_angle\",\"riegl."
"raw_line_angle\",\"riegl.reference_object_id\"],\"metadata\":[\"riegl.device"
"\",\"riegl.device_geometry\",\"riegl.geo_tag\",\"riegl.georeferencing_parame"
"ters\",\"riegl.scan_pattern?\",\"riegl.time_base\",\"riegl.item_names\",\"rieg"
"l.control_object_reference_file\"]}"
)

# Schema for ".opp" files
RDB_SCHEMA_RIEGL_OPP = (
"{\"identifier\":\"opp\",\"extension\":\"opp\",\"attributes\":[\"riegl.id\",\"riegl."
"xyz*\",\"riegl.xyz_accuracies?\",\"riegl.surface_normal\",\"riegl.plane_up\","
"\"riegl.point_count\",\"riegl.std_dev\",\"riegl.plane_width\",\"riegl.plane_h"
"eight\",\"riegl.plane_confidence_normal\",\"riegl.model_fit_quality?\",\"rie"
"gl.used_for_adjustment\",\"riegl.xyz_socs\",\"riegl.timestamp\",\"riegl.mirr"
"or_facet\",\"riegl.platform_rpy_ROCS_NED\",\"riegl.platform_drpy_ROCS_NED\""
",\"riegl.platform_xyz_ROCS_ENU\",\"riegl.platform_dxyz_ROCS_ENU\",\"riegl.s"
"da.shift_vector\",\"riegl.raw_range\",\"riegl.raw_frame_angle\",\"riegl.raw_"
"line_angle\",\"riegl.reference_object_id\"],\"metadata\":[\"riegl.device\",\"r"
"iegl.device_geometry\",\"riegl.geo_tag\",\"riegl.georeferencing_parameters"
"\",\"riegl.scan_pattern?\",\"riegl.time_base\",\"riegl.item_names\",\"riegl.co"
"ntrol_object_reference_file\"]}"
)

# Schema for ".opx" files
RDB_SCHEMA_RIEGL_OPX = (
"{\"identifier\":\"opx\",\"extension\":\"opx\",\"attributes\":[\"riegl.id\",\"riegl."
"xyz*\",\"riegl.control_object_type\",\"riegl.model_cs_axis_x?\",\"riegl.mode"
"l_cs_axis_y?\",\"riegl.model_cs_axis_z?\",\"riegl.model_fit_quality?\",\"rie"
"gl.obs_confidence_xy?\",\"riegl.obs_confidence_z?\",\"riegl.obs_signal_con"
"fidence_rot?\",\"riegl.obs_confidence_range?\",\"riegl.obs_confidence_thet"
"a?\",\"riegl.obs_confidence_phi?\",\"riegl.point_count?\",\"riegl.used_for_a"
"djustment\",\"riegl.xyz_socs\",\"riegl.timestamp\",\"riegl.mirror_facet\",\"ri"
"egl.platform_rpy_ROCS_NED\",\"riegl.platform_drpy_ROCS_NED\",\"riegl.platf"
"orm_xyz_ROCS_ENU\",\"riegl.platform_dxyz_ROCS_ENU\",\"riegl.sda.shift_vect"
"or\",\"riegl.raw_range\",\"riegl.raw_frame_angle\",\"riegl.raw_line_angle\",\""
"riegl.reference_object_id\"],\"metadata\":[\"riegl.device\",\"riegl.device_g"
"eometry\",\"riegl.geo_tag\",\"riegl.georeferencing_parameters\",\"riegl.scan"
"_pattern?\",\"riegl.time_base\",\"riegl.control_object_catalog\",\"riegl.ite"
"m_names\",\"riegl.control_object_reference_file\"]}"
)

# Schema for ".owp" files
RDB_SCHEMA_RIEGL_OWP = (
"{\"identifier\":\"owp\",\"extension\":\"owp\",\"attributes\":[\"riegl.id*\",\"riegl"
".raw_range\",\"riegl.amplitude\",\"riegl.deviation\",\"riegl.gain\"],\"metadat"
"a\":[]}"
)

# Schema for ".pefx" files
RDB_SCHEMA_RIEGL_PEFX = (
"{\"identifier\":\"pefx\",\"extension\":\"pefx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.xyz*\",\"riegl.xyz_accuracies?\",\"riegl.surface_normal\",\"riegl.plane_up"
"\",\"riegl.std_dev\",\"riegl.plane_confidence_normal\",\"riegl.plane_width\","
"\"riegl.plane_height\",\"riegl.vertex_first\",\"riegl.vertex_count\",\"riegl."
"used_for_adjustment\",\"riegl.acquisition_date?\",\"riegl.import_line_numb"
"er\",\"riegl.import_line_count\"],\"metadata\":[\"riegl.geo_tag\",\"riegl.vert"
"ex_info\",\"riegl.item_names\",\"riegl.imported_files\"]}"
)

# Schema for ".pofx" files
RDB_SCHEMA_RIEGL_PROJECT_POFX = (
"{\"identifier\":\"project.pofx\",\"extension\":\"pofx\",\"attributes\":[\"riegl.i"
"d\",\"riegl.pof_timestamp*\",\"riegl.pof_latitude\",\"riegl.pof_longitude\",\""
"riegl.pof_height\",\"riegl.pof_roll\",\"riegl.pof_pitch\",\"riegl.pof_yaw\",\""
"riegl.pof_path_length?\"],\"metadata\":[\"riegl.device?\",\"riegl.time_base\""
",\"riegl.trajectory_info\"]}"
)

# Schema for ".pofx" files
RDB_SCHEMA_RIEGL_SCAN_POFX = (
"{\"identifier\":\"scan.pofx\",\"extension\":\"pofx\",\"attributes\":[\"riegl.id\","
"\"riegl.pof_timestamp*\",\"riegl.pof_latitude\",\"riegl.pof_longitude\",\"rie"
"gl.pof_height\",\"riegl.pof_roll\",\"riegl.pof_pitch\",\"riegl.pof_yaw\",\"rie"
"gl.pof_path_length?\",\"riegl.pof_xyz\",\"riegl.pof_roll_ned\",\"riegl.pof_p"
"itch_ned\",\"riegl.pof_yaw_ned\"],\"metadata\":[\"riegl.device?\",\"riegl.time"
"_base\",\"riegl.geo_tag\",\"riegl.trajectory_info\"]}"
)

# Schema for ".poqx" files
RDB_SCHEMA_RIEGL_PROJECT_POQX = (
"{\"identifier\":\"project.poqx\",\"extension\":\"poqx\",\"attributes\":[\"riegl.i"
"d\",\"riegl.pof_timestamp*\",\"riegl.pof_accuracy_north\",\"riegl.pof_accura"
"cy_east\",\"riegl.pof_accuracy_down\",\"riegl.pof_accuracy_roll\",\"riegl.po"
"f_accuracy_pitch\",\"riegl.pof_accuracy_yaw\",\"riegl.pof_path_length?\",\"r"
"iegl.pof_pdop\",\"riegl.pof_satellites_gnss?\",\"riegl.pof_satellites_gps?"
"\",\"riegl.pof_satellites_glonass?\",\"riegl.pof_satellites_beidou?\",\"rieg"
"l.pof_satellites_galileo?\",\"riegl.pof_satellites_qzss?\"],\"metadata\":[\""
"riegl.time_base\",\"riegl.trajectory_info\"]}"
)

# Schema for ".poqx" files
RDB_SCHEMA_RIEGL_SCAN_POQX = (
"{\"identifier\":\"scan.poqx\",\"extension\":\"poqx\",\"attributes\":[\"riegl.id\","
"\"riegl.pof_timestamp*\",\"riegl.pof_accuracy_north\",\"riegl.pof_accuracy_"
"east\",\"riegl.pof_accuracy_down\",\"riegl.pof_accuracy_roll\",\"riegl.pof_a"
"ccuracy_pitch\",\"riegl.pof_accuracy_yaw\",\"riegl.pof_path_length?\",\"rieg"
"l.pof_pdop\",\"riegl.pof_satellites_gnss?\",\"riegl.pof_satellites_gps?\",\""
"riegl.pof_satellites_glonass?\",\"riegl.pof_satellites_beidou?\",\"riegl.p"
"of_satellites_galileo?\",\"riegl.pof_satellites_qzss?\"],\"metadata\":[\"rie"
"gl.time_base\",\"riegl.trajectory_info\"]}"
)

# Schema for ".ppx" files
RDB_SCHEMA_RIEGL_PPX = (
"{\"identifier\":\"ppx\",\"extension\":\"ppx\",\"attributes\":[\"riegl.id\",\"riegl."
"pps_timestamp_intern*\",\"riegl.pps_timestamp_extern\"],\"metadata\":[\"rieg"
"l.device\",\"riegl.time_base\"]}"
)

# Schema for ".ptch" files
RDB_SCHEMA_RIEGL_PROJECT_PTCH = (
"{\"identifier\":\"project.ptch\",\"extension\":\"ptch\",\"attributes\":[\"riegl.x"
"yz*\",\"riegl.surface_normal\",\"riegl.plane_up\",\"riegl.reflectance?\",\"rie"
"gl.point_count\",\"riegl.std_dev\",\"riegl.plane_width\",\"riegl.plane_heigh"
"t\",\"riegl.plane_count\",\"riegl.covariances\",\"riegl.id\"],\"metadata\":[\"ri"
"egl.device\",\"riegl.geo_tag?\",\"riegl.scan_pattern?\",\"riegl.time_base?\","
"\"riegl.plane_patch_statistics?\"]}"
)

# Schema for ".ptch" files
RDB_SCHEMA_RIEGL_SCAN_PTCH = (
"{\"identifier\":\"scan.ptch\",\"extension\":\"ptch\",\"attributes\":[\"riegl.xyz*"
"\",\"riegl.xyz_socs\",\"riegl.direction?\",\"riegl.direction_medium?\",\"riegl"
".direction_coarse?\",\"riegl.surface_normal\",\"riegl.plane_up\",\"riegl.tim"
"estamp\",\"riegl.reflectance?\",\"riegl.point_count\",\"riegl.std_dev\",\"rieg"
"l.plane_width\",\"riegl.plane_height\",\"riegl.plane_count\",\"riegl.mirror_"
"facet\",\"riegl.covariances\",\"riegl.id\",\"riegl.plane_slope_class?\",\"rieg"
"l.plane_occupancy\",\"riegl.plane_confidence_normal\",\"riegl.plane_cog_li"
"nk\",\"riegl.match_count\",\"riegl.platform_rpy_ROCS_NED\",\"riegl.platform_"
"xyz_ROCS_ENU\",\"riegl.platform_drpy_ROCS_NED\",\"riegl.platform_dxyz_ROCS"
"_ENU\",\"riegl.sda.shift_vector\",\"riegl.raw_range\",\"riegl.raw_frame_angl"
"e\",\"riegl.raw_line_angle\"],\"metadata\":[\"riegl.device\",\"riegl.device_ge"
"ometry\",\"riegl.geo_tag\",\"riegl.georeferencing_parameters\",\"riegl.scan_"
"pattern?\",\"riegl.time_base\",\"riegl.plane_patch_statistics?\",\"riegl.pla"
"ne_slope_class_info?\"]}"
)

# Schema for ".ptch" files
RDB_SCHEMA_RIEGL_SCANPOS_PTCH = (
"{\"identifier\":\"scanpos.ptch\",\"extension\":\"ptch\",\"attributes\":[\"riegl.x"
"yz*\",\"riegl.surface_normal\",\"riegl.plane_up\",\"riegl.reflectance?\",\"rie"
"gl.point_count\",\"riegl.std_dev\",\"riegl.plane_width\",\"riegl.plane_heigh"
"t\",\"riegl.plane_count\",\"riegl.covariances\",\"riegl.id\"],\"metadata\":[\"ri"
"egl.device\",\"riegl.geo_tag?\",\"riegl.scan_pattern?\",\"riegl.time_base?\","
"\"riegl.plane_patch_statistics?\"]}"
)

# Schema for ".rdbx" files
RDB_SCHEMA_RIEGL_RDBX = (
"{\"identifier\":\"rdbx\",\"extension\":\"rdbx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.timestamp\",\"riegl.xyz*\",\"riegl.xyz_socs\",\"riegl.direction_medium?\",\""
"riegl.direction?\",\"riegl.amplitude\",\"riegl.reflectance?\",\"riegl.deviat"
"ion?\",\"riegl.pulse_width?\",\"riegl.target_index\",\"riegl.target_count\",\""
"riegl.mirror_facet?\",\"riegl.scan_segment?\",\"riegl.mta_unresolved?\",\"ri"
"egl.mta_zone?\",\"riegl.window_echo_impact_corrected?\",\"riegl.rgba?\",\"ri"
"egl.class?\",\"riegl.start_of_scan_line?\",\"riegl.end_of_scan_line?\",\"rie"
"gl.source_indicator?\",\"riegl.fwa?\",\"riegl.waveform_available?\",\"riegl."
"wfm_sbl_id?\",\"riegl.wfm_echo_time_offset?\",\"riegl.scan_angle\",\"riegl.s"
"can_direction\",\"riegl.source_index?\",\"riegl.hydro_intersection_point?\""
",\"riegl.hydro_intersection_normal?\"],\"metadata\":[\"riegl.atmosphere\",\"r"
"iegl.beam_geometry\",\"riegl.device_geometry\",\"riegl.device\",\"riegl.gaus"
"sian_decomposition?\",\"riegl.exponential_decomposition?\",\"riegl.geo_tag"
"\",\"riegl.georeferencing_parameters\",\"riegl.mta_settings?\",\"riegl.near_"
"range_correction?\",\"riegl.noise_estimates?\",\"riegl.angular_notch_filte"
"r?\",\"riegl.notch_filter?\",\"riegl.pointcloud_info?\",\"riegl.pulse_positi"
"on_modulation?\",\"riegl.range_statistics?\",\"riegl.receiver_internals?\","
"\"riegl.reflectance_calculation?\",\"riegl.reflectance_correction?\",\"rieg"
"l.scan_pattern\",\"riegl.time_base\",\"riegl.waveform_settings?\",\"riegl.wi"
"ndow_analysis?\",\"riegl.window_echo_correction?\"]}"
)

# Schema for ".rmvx" files
RDB_SCHEMA_RIEGL_RMVX = (
"{\"identifier\":\"rmvx\",\"extension\":\"rmvx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.voxel_index*\",\"riegl.amplitude\",\"riegl.reflectance\",\"riegl.deviation"
"\",\"riegl.direction_medium\",\"riegl.point_count\",\"riegl.voxel_linear_sum"
"s\",\"riegl.voxel_square_sums\",\"riegl.timestamp_min?\",\"riegl.timestamp_m"
"ax?\"],\"metadata\":[\"riegl.geo_tag\",\"riegl.voxel_info\",\"riegl.time_base?"
"\"]}"
)

# Schema for ".s10x" files
RDB_SCHEMA_RIEGL_S10X = (
"{\"identifier\":\"s10x\",\"extension\":\"s10x\",\"attributes\":[\"riegl.id\",\"rieg"
"l.timestamp*\",\"riegl.frame_angle_coarse\",\"riegl.gyroscope_raw\",\"riegl."
"accelerometer_raw\",\"riegl.magnetic_field_sensor_raw\",\"riegl.gyroscope\""
",\"riegl.accelerometer\",\"riegl.magnetic_field_sensor\",\"riegl.barometric"
"_height_amsl\",\"riegl.temperature\",\"riegl.line_scan_active\",\"riegl.fram"
"e_scan_active\",\"riegl.data_acquisition_active\"],\"metadata\":[\"riegl.tim"
"e_base\",\"riegl.device?\",\"riegl.pose_sensors\"]}"
)

# Schema for ".sbx" files
RDB_SCHEMA_RIEGL_SBX = (
"{\"identifier\":\"sbx\",\"extension\":\"sbx\",\"attributes\":[\"riegl.id*\",\"riegl"
".wfm_sbl_channel\",\"riegl.wfm_sbl_mean\",\"riegl.wfm_sbl_std_dev\",\"riegl."
"wfm_sbl_time_offset\",\"riegl.wfm_sda_first\",\"riegl.wfm_sda_count\"],\"met"
"adata\":[]}"
)

# Schema for ".sdcx" files
RDB_SCHEMA_RIEGL_SDCX = (
"{\"identifier\":\"sdcx\",\"extension\":\"sdcx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.timestamp*\",\"riegl.xyz\",\"riegl.amplitude\",\"riegl.reflectance?\",\"rieg"
"l.deviation?\",\"riegl.pulse_width?\",\"riegl.target_index\",\"riegl.target_"
"count\",\"riegl.mirror_facet?\",\"riegl.scan_segment?\",\"riegl.mta_unresolv"
"ed?\",\"riegl.mta_zone?\",\"riegl.window_echo_impact_corrected?\",\"riegl.cl"
"ass?\",\"riegl.start_of_scan_line?\",\"riegl.end_of_scan_line?\",\"riegl.sou"
"rce_indicator?\",\"riegl.fwa?\",\"riegl.waveform_available?\",\"riegl.wfm_sb"
"l_id?\",\"riegl.wfm_echo_time_offset?\"],\"metadata\":[\"riegl.atmosphere\",\""
"riegl.beam_geometry\",\"riegl.device_geometry\",\"riegl.device\",\"riegl.gau"
"ssian_decomposition?\",\"riegl.exponential_decomposition?\",\"riegl.mta_se"
"ttings?\",\"riegl.near_range_correction?\",\"riegl.noise_estimates?\",\"rieg"
"l.angular_notch_filter?\",\"riegl.notch_filter?\",\"riegl.pointcloud_info?"
"\",\"riegl.pulse_position_modulation?\",\"riegl.range_statistics?\",\"riegl."
"receiver_internals?\",\"riegl.reflectance_calculation?\",\"riegl.reflectan"
"ce_correction?\",\"riegl.scan_pattern\",\"riegl.time_base\",\"riegl.window_a"
"nalysis?\",\"riegl.window_echo_correction?\"]}"
)

# Schema for ".sidx" files
RDB_SCHEMA_RIEGL_SIDX = (
"{\"identifier\":\"sidx\",\"extension\":\"sidx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.shot_timestamp_hr*\",\"riegl.echo_first\",\"riegl.echo_count\"],\"metadata"
"\":[\"riegl.shot_info\",\"riegl.echo_info\"]}"
)

# Schema for ".sodx" files
RDB_SCHEMA_RIEGL_SODX = (
"{\"identifier\":\"sodx\",\"extension\":\"sodx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.shot_timestamp_hr*\",\"riegl.mirror_facet\",\"riegl.scan_segment\",\"riegl"
".start_of_scan_line\",\"riegl.line_angle_coarse\",\"riegl.shot_origin\",\"ri"
"egl.shot_biaxial_shift?\",\"riegl.shot_direction\",\"riegl.shot_direction_"
"levelled?\",\"riegl.wfm_sbl_first?\",\"riegl.wfm_sbl_count?\",\"riegl.echo_f"
"irst?\",\"riegl.echo_count?\"],\"metadata\":[\"riegl.atmosphere\",\"riegl.devi"
"ce\",\"riegl.device_geometry\",\"riegl.device_output_limits\",\"riegl.beam_g"
"eometry\",\"riegl.near_range_correction?\",\"riegl.window_echo_correction?"
"\",\"riegl.receiver_internals?\",\"riegl.gaussian_decomposition?\",\"riegl.e"
"xponential_decomposition?\",\"riegl.mta_settings?\",\"riegl.pulse_position"
"_modulation?\",\"riegl.notch_filter?\",\"riegl.reflectance_calculation?\",\""
"riegl.scan_pattern\",\"riegl.time_base\",\"riegl.waveform_info?\",\"riegl.ec"
"ho_info?\"]}"
)

# Schema for ".sp{C}" files
RDB_SCHEMA_RIEGL_SPC = (
"{\"identifier\":\"sp{C}\",\"extension\":\"sp{C}\",\"attributes\":[\"riegl.id*\",\"r"
"iegl.wfm_sample_value\"],\"metadata\":[]}"
)

# Schema for ".vtx" files
RDB_SCHEMA_RIEGL_VTX = (
"{\"identifier\":\"vtx\",\"extension\":\"vtx\",\"attributes\":[\"riegl.id*\",\"riegl"
".xyz\",\"riegl.xyz_accuracies?\"],\"metadata\":[\"riegl.geo_tag\"]}"
)

# Schema for ".vxls" files
RDB_SCHEMA_RIEGL_VXLS = (
"{\"identifier\":\"vxls\",\"extension\":\"vxls\",\"attributes\":[\"riegl.id\",\"rieg"
"l.xyz*\",\"riegl.covariances\",\"riegl.pca_axis_max\",\"riegl.pca_axis_min\","
"\"riegl.pca_extents\",\"riegl.point_count\",\"riegl.reflectance\",\"riegl.sha"
"pe_id\",\"riegl.voxel_collapsed\",\"riegl.std_dev?\"],\"metadata\":[\"riegl.vo"
"xel_info\",\"riegl.geo_tag?\"]}"
)

# Schema for ".wdcx" files
RDB_SCHEMA_RIEGL_WDCX = (
"{\"identifier\":\"wdcx\",\"extension\":\"wdcx\",\"attributes\":[\"riegl.id\",\"rieg"
"l.timestamp\",\"riegl.xyz*\",\"riegl.xyz_socs\",\"riegl.direction_medium?\",\""
"riegl.direction?\",\"riegl.amplitude\",\"riegl.reflectance?\",\"riegl.deviat"
"ion?\",\"riegl.pulse_width?\",\"riegl.target_index\",\"riegl.target_count\",\""
"riegl.mirror_facet?\",\"riegl.scan_segment?\",\"riegl.mta_unresolved?\",\"ri"
"egl.mta_zone?\",\"riegl.window_echo_impact_corrected?\",\"riegl.rgba?\",\"ri"
"egl.class?\",\"riegl.start_of_scan_line?\",\"riegl.end_of_scan_line?\",\"rie"
"gl.source_indicator?\",\"riegl.fwa?\",\"riegl.waveform_available?\",\"riegl."
"wfm_sbl_id?\",\"riegl.wfm_echo_time_offset?\",\"riegl.scan_angle\",\"riegl.s"
"can_direction\",\"riegl.source_index?\",\"riegl.hydro_intersection_point?\""
",\"riegl.hydro_intersection_normal?\"],\"metadata\":[\"riegl.atmosphere\",\"r"
"iegl.beam_geometry\",\"riegl.device_geometry\",\"riegl.device\",\"riegl.gaus"
"sian_decomposition?\",\"riegl.exponential_decomposition?\",\"riegl.geo_tag"
"\",\"riegl.georeferencing_parameters\",\"riegl.mta_settings?\",\"riegl.near_"
"range_correction?\",\"riegl.noise_estimates?\",\"riegl.angular_notch_filte"
"r?\",\"riegl.notch_filter?\",\"riegl.pointcloud_info?\",\"riegl.pulse_positi"
"on_modulation?\",\"riegl.range_statistics?\",\"riegl.receiver_internals?\","
"\"riegl.reflectance_calculation?\",\"riegl.reflectance_correction?\",\"rieg"
"l.scan_pattern\",\"riegl.time_base\",\"riegl.waveform_settings?\",\"riegl.wi"
"ndow_analysis?\",\"riegl.window_echo_correction?\"]}"
)

# Schema for ".wex" files
RDB_SCHEMA_RIEGL_WEX = (
"{\"identifier\":\"wex\",\"extension\":\"wex\",\"attributes\":[\"riegl.id\",\"riegl."
"timestamp*\",\"riegl.wex_filter_valid\",\"riegl.wex_point_count\",\"riegl.we"
"x_amplitude\",\"riegl.wex_amplitude_std_dev\",\"riegl.wex_amplitude_min\",\""
"riegl.wex_amplitude_max\",\"riegl.wex_amplitude_offset\",\"riegl.wex_devia"
"tion\",\"riegl.wex_deviation_std_dev\",\"riegl.wex_deviation_min\",\"riegl.w"
"ex_deviation_max\",\"riegl.wex_range\",\"riegl.wex_range_std_dev\",\"riegl.w"
"ex_range_min\",\"riegl.wex_range_max\",\"riegl.wex_filter_range_min\",\"rieg"
"l.wex_filter_range_max\",\"riegl.wex_filter_amplitude_max\"],\"metadata\":["
"\"riegl.device\",\"riegl.notch_filter\",\"riegl.window_analysis\"]}"
)

# Table of all RDB file schema strings
RDB_SCHEMA_ARRAY = [
    RDB_SCHEMA_RIEGL_AVG_FWA,
    RDB_SCHEMA_RIEGL_AVG_SBX,
    RDB_SCHEMA_RIEGL_AVG_SIDX,
    RDB_SCHEMA_RIEGL_AVG_SPC,
    RDB_SCHEMA_RIEGL_CPX,
    RDB_SCHEMA_RIEGL_DOIX,
    RDB_SCHEMA_RIEGL_FWA,
    RDB_SCHEMA_RIEGL_MPX,
    RDB_SCHEMA_RIEGL_MTCH,
    RDB_SCHEMA_RIEGL_MVX,
    RDB_SCHEMA_RIEGL_OBSX,
    RDB_SCHEMA_RIEGL_OPEFX,
    RDB_SCHEMA_RIEGL_OPP,
    RDB_SCHEMA_RIEGL_OPX,
    RDB_SCHEMA_RIEGL_OWP,
    RDB_SCHEMA_RIEGL_PEFX,
    RDB_SCHEMA_RIEGL_PROJECT_POFX,
    RDB_SCHEMA_RIEGL_SCAN_POFX,
    RDB_SCHEMA_RIEGL_PROJECT_POQX,
    RDB_SCHEMA_RIEGL_SCAN_POQX,
    RDB_SCHEMA_RIEGL_PPX,
    RDB_SCHEMA_RIEGL_PROJECT_PTCH,
    RDB_SCHEMA_RIEGL_SCAN_PTCH,
    RDB_SCHEMA_RIEGL_SCANPOS_PTCH,
    RDB_SCHEMA_RIEGL_RDBX,
    RDB_SCHEMA_RIEGL_RMVX,
    RDB_SCHEMA_RIEGL_S10X,
    RDB_SCHEMA_RIEGL_SBX,
    RDB_SCHEMA_RIEGL_SDCX,
    RDB_SCHEMA_RIEGL_SIDX,
    RDB_SCHEMA_RIEGL_SODX,
    RDB_SCHEMA_RIEGL_SPC,
    RDB_SCHEMA_RIEGL_VTX,
    RDB_SCHEMA_RIEGL_VXLS,
    RDB_SCHEMA_RIEGL_WDCX,
    RDB_SCHEMA_RIEGL_WEX
]
