LCOV - code coverage report
Current view: top level - frmts/envisat - records.c (source / functions) Hit Total Coverage
Test: gdal_filtered.info Lines: 0 126 0.0 %
Date: 2024-11-21 22:18:42 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /******************************************************************************
       2             :  * $Id$
       3             :  *
       4             :  * Project:  APP ENVISAT Support
       5             :  * Purpose:  Low Level Envisat file access (read/write) API.
       6             :  * Author:   Antonio Valentino <antonio.valentino@tiscali.it>
       7             :  *
       8             :  ******************************************************************************
       9             :  * Copyright (c) 2011, Antonio Valentino
      10             :  *
      11             :  * SPDX-License-Identifier: MIT
      12             :  ****************************************************************************/
      13             : 
      14             : #include "cpl_string.h"
      15             : #include "records.h"
      16             : 
      17             : /* --- ASAR record descriptors --------------------------------------------- */
      18             : static const EnvisatFieldDescr ASAR_ANTENNA_ELEV_PATT_ADSR[] = {
      19             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
      20             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
      21             :     {"BEAM_ID", 13, EDT_Char, 3},
      22             :     {"ELEVATION_PATTERN.SLANT_RANGE_TIME", 16, EDT_Float32, 11},
      23             :     {"ELEVATION_PATTERN.ELEVATION_ANGLES", 60, EDT_Float32, 11},
      24             :     {"ELEVATION_PATTERN.ANTENNA_PATTERN", 104, EDT_Float32, 11},
      25             :     /*{"SPARE_1",                                        148, EDT_UByte, 14},*/
      26             :     {NULL, 0, EDT_Unknown, 0}};
      27             : 
      28             : static const EnvisatFieldDescr ASAR_CHIRP_PARAMS_ADSR[] = {
      29             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
      30             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
      31             :     {"BEAM_ID", 13, EDT_Char, 3},
      32             :     {"POLAR", 16, EDT_Char, 3},
      33             :     {"CHIRP_WIDTH", 19, EDT_Float32, 1},
      34             :     {"CHIRP_SIDELOBE", 23, EDT_Float32, 1},
      35             :     {"CHIRP_ISLR", 27, EDT_Float32, 1},
      36             :     {"CHIRP_PEAK_LOC", 31, EDT_Float32, 1},
      37             :     {"CHIRP_POWER", 35, EDT_Float32, 1},
      38             :     {"ELEV_CORR_FACTOR", 39, EDT_Float32, 1},
      39             :     /*{"SPARE_1",                                         43, EDT_UByte, 16},*/
      40             :     {"CAL_PULSE_INFO.1.MAX_CAL", 59, EDT_Float32, 3},
      41             :     {"CAL_PULSE_INFO.1.AVG_CAL", 71, EDT_Float32, 3},
      42             :     {"CAL_PULSE_INFO.1.AVG_VAL_1A", 83, EDT_Float32, 1},
      43             :     {"CAL_PULSE_INFO.1.PHS_CAL", 87, EDT_Float32, 4},
      44             :     {"CAL_PULSE_INFO.2.MAX_CAL", 103, EDT_Float32, 3},
      45             :     {"CAL_PULSE_INFO.2.AVG_CAL", 115, EDT_Float32, 3},
      46             :     {"CAL_PULSE_INFO.2.AVG_VAL_1A", 127, EDT_Float32, 1},
      47             :     {"CAL_PULSE_INFO.2.PHS_CAL", 131, EDT_Float32, 4},
      48             :     {"CAL_PULSE_INFO.3.MAX_CAL", 147, EDT_Float32, 3},
      49             :     {"CAL_PULSE_INFO.3.AVG_CAL", 159, EDT_Float32, 3},
      50             :     {"CAL_PULSE_INFO.3.AVG_VAL_1A", 171, EDT_Float32, 1},
      51             :     {"CAL_PULSE_INFO.3.PHS_CAL", 175, EDT_Float32, 4},
      52             :     {"CAL_PULSE_INFO.4.MAX_CAL", 191, EDT_Float32, 3},
      53             :     {"CAL_PULSE_INFO.4.AVG_CAL", 203, EDT_Float32, 3},
      54             :     {"CAL_PULSE_INFO.4.AVG_VAL_1A", 215, EDT_Float32, 1},
      55             :     {"CAL_PULSE_INFO.4.PHS_CAL", 219, EDT_Float32, 4},
      56             :     {"CAL_PULSE_INFO.5.MAX_CAL", 235, EDT_Float32, 3},
      57             :     {"CAL_PULSE_INFO.5.AVG_CAL", 247, EDT_Float32, 3},
      58             :     {"CAL_PULSE_INFO.5.AVG_VAL_1A", 259, EDT_Float32, 1},
      59             :     {"CAL_PULSE_INFO.5.PHS_CAL", 263, EDT_Float32, 4},
      60             :     {"CAL_PULSE_INFO.6.MAX_CAL", 279, EDT_Float32, 3},
      61             :     {"CAL_PULSE_INFO.6.AVG_CAL", 291, EDT_Float32, 3},
      62             :     {"CAL_PULSE_INFO.6.AVG_VAL_1A", 303, EDT_Float32, 1},
      63             :     {"CAL_PULSE_INFO.6.PHS_CAL", 307, EDT_Float32, 4},
      64             :     {"CAL_PULSE_INFO.7.MAX_CAL", 323, EDT_Float32, 3},
      65             :     {"CAL_PULSE_INFO.7.AVG_CAL", 335, EDT_Float32, 3},
      66             :     {"CAL_PULSE_INFO.7.AVG_VAL_1A", 347, EDT_Float32, 1},
      67             :     {"CAL_PULSE_INFO.7.PHS_CAL", 351, EDT_Float32, 4},
      68             :     {"CAL_PULSE_INFO.8.MAX_CAL", 367, EDT_Float32, 3},
      69             :     {"CAL_PULSE_INFO.8.AVG_CAL", 379, EDT_Float32, 3},
      70             :     {"CAL_PULSE_INFO.8.AVG_VAL_1A", 391, EDT_Float32, 1},
      71             :     {"CAL_PULSE_INFO.8.PHS_CAL", 395, EDT_Float32, 4},
      72             :     {"CAL_PULSE_INFO.9.MAX_CAL", 411, EDT_Float32, 3},
      73             :     {"CAL_PULSE_INFO.9.AVG_CAL", 423, EDT_Float32, 3},
      74             :     {"CAL_PULSE_INFO.9.AVG_VAL_1A", 435, EDT_Float32, 1},
      75             :     {"CAL_PULSE_INFO.9.PHS_CAL", 439, EDT_Float32, 4},
      76             :     {"CAL_PULSE_INFO.10.MAX_CAL", 455, EDT_Float32, 3},
      77             :     {"CAL_PULSE_INFO.10.AVG_CAL", 467, EDT_Float32, 3},
      78             :     {"CAL_PULSE_INFO.10.AVG_VAL_1A", 479, EDT_Float32, 1},
      79             :     {"CAL_PULSE_INFO.10.PHS_CAL", 483, EDT_Float32, 4},
      80             :     {"CAL_PULSE_INFO.11.MAX_CAL", 499, EDT_Float32, 3},
      81             :     {"CAL_PULSE_INFO.11.AVG_CAL", 511, EDT_Float32, 3},
      82             :     {"CAL_PULSE_INFO.11.AVG_VAL_1A", 523, EDT_Float32, 1},
      83             :     {"CAL_PULSE_INFO.11.PHS_CAL", 527, EDT_Float32, 4},
      84             :     {"CAL_PULSE_INFO.12.MAX_CAL", 543, EDT_Float32, 3},
      85             :     {"CAL_PULSE_INFO.12.AVG_CAL", 555, EDT_Float32, 3},
      86             :     {"CAL_PULSE_INFO.12.AVG_VAL_1A", 567, EDT_Float32, 1},
      87             :     {"CAL_PULSE_INFO.12.PHS_CAL", 571, EDT_Float32, 4},
      88             :     {"CAL_PULSE_INFO.13.MAX_CAL", 587, EDT_Float32, 3},
      89             :     {"CAL_PULSE_INFO.13.AVG_CAL", 599, EDT_Float32, 3},
      90             :     {"CAL_PULSE_INFO.13.AVG_VAL_1A", 611, EDT_Float32, 1},
      91             :     {"CAL_PULSE_INFO.13.PHS_CAL", 615, EDT_Float32, 4},
      92             :     {"CAL_PULSE_INFO.14.MAX_CAL", 631, EDT_Float32, 3},
      93             :     {"CAL_PULSE_INFO.14.AVG_CAL", 643, EDT_Float32, 3},
      94             :     {"CAL_PULSE_INFO.14.AVG_VAL_1A", 655, EDT_Float32, 1},
      95             :     {"CAL_PULSE_INFO.14.PHS_CAL", 659, EDT_Float32, 4},
      96             :     {"CAL_PULSE_INFO.15.MAX_CAL", 675, EDT_Float32, 3},
      97             :     {"CAL_PULSE_INFO.15.AVG_CAL", 687, EDT_Float32, 3},
      98             :     {"CAL_PULSE_INFO.15.AVG_VAL_1A", 699, EDT_Float32, 1},
      99             :     {"CAL_PULSE_INFO.15.PHS_CAL", 703, EDT_Float32, 4},
     100             :     {"CAL_PULSE_INFO.16.MAX_CAL", 719, EDT_Float32, 3},
     101             :     {"CAL_PULSE_INFO.16.AVG_CAL", 731, EDT_Float32, 3},
     102             :     {"CAL_PULSE_INFO.16.AVG_VAL_1A", 743, EDT_Float32, 1},
     103             :     {"CAL_PULSE_INFO.16.PHS_CAL", 747, EDT_Float32, 4},
     104             :     {"CAL_PULSE_INFO.17.MAX_CAL", 763, EDT_Float32, 3},
     105             :     {"CAL_PULSE_INFO.17.AVG_CAL", 775, EDT_Float32, 3},
     106             :     {"CAL_PULSE_INFO.17.AVG_VAL_1A", 787, EDT_Float32, 1},
     107             :     {"CAL_PULSE_INFO.17.PHS_CAL", 791, EDT_Float32, 4},
     108             :     {"CAL_PULSE_INFO.18.MAX_CAL", 807, EDT_Float32, 3},
     109             :     {"CAL_PULSE_INFO.18.AVG_CAL", 819, EDT_Float32, 3},
     110             :     {"CAL_PULSE_INFO.18.AVG_VAL_1A", 831, EDT_Float32, 1},
     111             :     {"CAL_PULSE_INFO.18.PHS_CAL", 835, EDT_Float32, 4},
     112             :     {"CAL_PULSE_INFO.19.MAX_CAL", 851, EDT_Float32, 3},
     113             :     {"CAL_PULSE_INFO.19.AVG_CAL", 863, EDT_Float32, 3},
     114             :     {"CAL_PULSE_INFO.19.AVG_VAL_1A", 875, EDT_Float32, 1},
     115             :     {"CAL_PULSE_INFO.19.PHS_CAL", 879, EDT_Float32, 4},
     116             :     {"CAL_PULSE_INFO.20.MAX_CAL", 895, EDT_Float32, 3},
     117             :     {"CAL_PULSE_INFO.20.AVG_CAL", 907, EDT_Float32, 3},
     118             :     {"CAL_PULSE_INFO.20.AVG_VAL_1A", 919, EDT_Float32, 1},
     119             :     {"CAL_PULSE_INFO.20.PHS_CAL", 923, EDT_Float32, 4},
     120             :     {"CAL_PULSE_INFO.21.MAX_CAL", 939, EDT_Float32, 3},
     121             :     {"CAL_PULSE_INFO.21.AVG_CAL", 951, EDT_Float32, 3},
     122             :     {"CAL_PULSE_INFO.21.AVG_VAL_1A", 963, EDT_Float32, 1},
     123             :     {"CAL_PULSE_INFO.21.PHS_CAL", 967, EDT_Float32, 4},
     124             :     {"CAL_PULSE_INFO.22.MAX_CAL", 983, EDT_Float32, 3},
     125             :     {"CAL_PULSE_INFO.22.AVG_CAL", 995, EDT_Float32, 3},
     126             :     {"CAL_PULSE_INFO.22.AVG_VAL_1A", 1007, EDT_Float32, 1},
     127             :     {"CAL_PULSE_INFO.22.PHS_CAL", 1011, EDT_Float32, 4},
     128             :     {"CAL_PULSE_INFO.23.MAX_CAL", 1027, EDT_Float32, 3},
     129             :     {"CAL_PULSE_INFO.23.AVG_CAL", 1039, EDT_Float32, 3},
     130             :     {"CAL_PULSE_INFO.23.AVG_VAL_1A", 1051, EDT_Float32, 1},
     131             :     {"CAL_PULSE_INFO.23.PHS_CAL", 1055, EDT_Float32, 4},
     132             :     {"CAL_PULSE_INFO.24.MAX_CAL", 1071, EDT_Float32, 3},
     133             :     {"CAL_PULSE_INFO.24.AVG_CAL", 1083, EDT_Float32, 3},
     134             :     {"CAL_PULSE_INFO.24.AVG_VAL_1A", 1095, EDT_Float32, 1},
     135             :     {"CAL_PULSE_INFO.24.PHS_CAL", 1099, EDT_Float32, 4},
     136             :     {"CAL_PULSE_INFO.25.MAX_CAL", 1115, EDT_Float32, 3},
     137             :     {"CAL_PULSE_INFO.25.AVG_CAL", 1127, EDT_Float32, 3},
     138             :     {"CAL_PULSE_INFO.25.AVG_VAL_1A", 1139, EDT_Float32, 1},
     139             :     {"CAL_PULSE_INFO.25.PHS_CAL", 1143, EDT_Float32, 4},
     140             :     {"CAL_PULSE_INFO.26.MAX_CAL", 1159, EDT_Float32, 3},
     141             :     {"CAL_PULSE_INFO.26.AVG_CAL", 1171, EDT_Float32, 3},
     142             :     {"CAL_PULSE_INFO.26.AVG_VAL_1A", 1183, EDT_Float32, 1},
     143             :     {"CAL_PULSE_INFO.26.PHS_CAL", 1187, EDT_Float32, 4},
     144             :     {"CAL_PULSE_INFO.27.MAX_CAL", 1203, EDT_Float32, 3},
     145             :     {"CAL_PULSE_INFO.27.AVG_CAL", 1215, EDT_Float32, 3},
     146             :     {"CAL_PULSE_INFO.27.AVG_VAL_1A", 1227, EDT_Float32, 1},
     147             :     {"CAL_PULSE_INFO.27.PHS_CAL", 1231, EDT_Float32, 4},
     148             :     {"CAL_PULSE_INFO.28.MAX_CAL", 1247, EDT_Float32, 3},
     149             :     {"CAL_PULSE_INFO.28.AVG_CAL", 1259, EDT_Float32, 3},
     150             :     {"CAL_PULSE_INFO.28.AVG_VAL_1A", 1271, EDT_Float32, 1},
     151             :     {"CAL_PULSE_INFO.28.PHS_CAL", 1275, EDT_Float32, 4},
     152             :     {"CAL_PULSE_INFO.29.MAX_CAL", 1291, EDT_Float32, 3},
     153             :     {"CAL_PULSE_INFO.29.AVG_CAL", 1303, EDT_Float32, 3},
     154             :     {"CAL_PULSE_INFO.29.AVG_VAL_1A", 1315, EDT_Float32, 1},
     155             :     {"CAL_PULSE_INFO.29.PHS_CAL", 1319, EDT_Float32, 4},
     156             :     {"CAL_PULSE_INFO.30.MAX_CAL", 1335, EDT_Float32, 3},
     157             :     {"CAL_PULSE_INFO.30.AVG_CAL", 1347, EDT_Float32, 3},
     158             :     {"CAL_PULSE_INFO.30.AVG_VAL_1A", 1359, EDT_Float32, 1},
     159             :     {"CAL_PULSE_INFO.30.PHS_CAL", 1363, EDT_Float32, 4},
     160             :     {"CAL_PULSE_INFO.31.MAX_CAL", 1379, EDT_Float32, 3},
     161             :     {"CAL_PULSE_INFO.31.AVG_CAL", 1391, EDT_Float32, 3},
     162             :     {"CAL_PULSE_INFO.31.AVG_VAL_1A", 1403, EDT_Float32, 1},
     163             :     {"CAL_PULSE_INFO.31.PHS_CAL", 1407, EDT_Float32, 4},
     164             :     {"CAL_PULSE_INFO.32.MAX_CAL", 1423, EDT_Float32, 3},
     165             :     {"CAL_PULSE_INFO.32.AVG_CAL", 1435, EDT_Float32, 3},
     166             :     {"CAL_PULSE_INFO.32.AVG_VAL_1A", 1447, EDT_Float32, 1},
     167             :     {"CAL_PULSE_INFO.32.PHS_CAL", 1451, EDT_Float32, 4},
     168             :     /*{"SPARE_2",                                       1467, EDT_UByte, 16},*/
     169             :     {NULL, 0, EDT_Unknown, 0}};
     170             : 
     171             : static const EnvisatFieldDescr ASAR_DOP_CENTROID_COEFFS_ADSR[] = {
     172             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     173             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     174             :     {"SLANT_RANGE_TIME", 13, EDT_Float32, 1},
     175             :     {"DOP_COEF", 17, EDT_Float32, 5},
     176             :     {"DOP_CONF", 37, EDT_Float32, 1},
     177             :     {"DOP_CONF_BELOW_THRESH_FLAG", 41, EDT_UByte, 1},
     178             :     {"DELTA_DOPP_COEFF", 42, EDT_Int16, 5},
     179             :     /*{"SPARE_1",                                         52, EDT_UByte, 3},*/
     180             :     {NULL, 0, EDT_Unknown, 0}};
     181             : 
     182             : #if 0  /* Unused */
     183             : static const EnvisatFieldDescr ASAR_GEOLOCATION_GRID_ADSR[] = {
     184             :     {"FIRST_ZERO_DOPPLER_TIME",                            0, EDT_MJD,         1},
     185             :     {"ATTACH_FLAG",                                       12, EDT_UByte,       1},
     186             :     {"LINE_NUM",                                          13, EDT_UInt32,      1},
     187             :     {"NUM_LINES",                                         17, EDT_UInt32,      1},
     188             :     {"SUB_SAT_TRACK",                                     21, EDT_Float32,     1},
     189             :     {"FIRST_LINE_TIE_POINTS.SAMP_NUMBERS",                25, EDT_UInt32,     11},
     190             :     {"FIRST_LINE_TIE_POINTS.SLANT_RANGE_TIMES",           69, EDT_Float32,    11},
     191             :     {"FIRST_LINE_TIE_POINTS.ANGLES",                     113, EDT_Float32,    11},
     192             :     {"FIRST_LINE_TIE_POINTS.LATS",                       157, EDT_Int32,      11},
     193             :     {"FIRST_LINE_TIE_POINTS.LONGS",                      201, EDT_Int32,      11},
     194             :     /*{"SPARE_1",                                        245, EDT_UByte,      22},*/
     195             :     {"LAST_ZERO_DOPPLER_TIME",                           267, EDT_MJD,         1},
     196             :     {"LAST_LINE_TIE_POINTS.SAMP_NUMBERS",                279, EDT_UInt32,     11},
     197             :     {"LAST_LINE_TIE_POINTS.SLANT_RANGE_TIMES",           323, EDT_Float32,    11},
     198             :     {"LAST_LINE_TIE_POINTS.ANGLES",                      367, EDT_Float32,    11},
     199             :     {"LAST_LINE_TIE_POINTS.LATS",                        411, EDT_Int32,      11},
     200             :     {"LAST_LINE_TIE_POINTS.LONGS",                       455, EDT_Int32,      11},
     201             :     /*{"SPARE_2",                                        499, EDT_UByte,      22},*/
     202             :     {NULL,                                                 0, EDT_Unknown,     0}
     203             : };
     204             : #endif /* Unused */
     205             : 
     206             : static const EnvisatFieldDescr ASAR_MAIN_PROCESSING_PARAMS_ADSR[] = {
     207             :     {"FIRST_ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     208             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     209             :     {"LAST_ZERO_DOPPLER_TIME", 13, EDT_MJD, 1},
     210             :     {"WORK_ORDER_ID", 25, EDT_Char, 12},
     211             :     {"TIME_DIFF", 37, EDT_Float32, 1},
     212             :     {"SWATH_ID", 41, EDT_Char, 3},
     213             :     {"RANGE_SPACING", 44, EDT_Float32, 1},
     214             :     {"AZIMUTH_SPACING", 48, EDT_Float32, 1},
     215             :     {"LINE_TIME_INTERVAL", 52, EDT_Float32, 1},
     216             :     {"NUM_OUTPUT_LINES", 56, EDT_UInt32, 1},
     217             :     {"NUM_SAMPLES_PER_LINE", 60, EDT_UInt32, 1},
     218             :     {"DATA_TYPE", 64, EDT_Char, 5},
     219             :     /*{"SPARE_1",                                         69, EDT_UByte, 51},*/
     220             :     {"DATA_ANALYSIS_FLAG", 120, EDT_UByte, 1},
     221             :     {"ANT_ELEV_CORR_FLAG", 121, EDT_UByte, 1},
     222             :     {"CHIRP_EXTRACT_FLAG", 122, EDT_UByte, 1},
     223             :     {"SRGR_FLAG", 123, EDT_UByte, 1},
     224             :     {"DOP_CEN_FLAG", 124, EDT_UByte, 1},
     225             :     {"DOP_AMB_FLAG", 125, EDT_UByte, 1},
     226             :     {"RANGE_SPREAD_COMP_FLAG", 126, EDT_UByte, 1},
     227             :     {"DETECTED_FLAG", 127, EDT_UByte, 1},
     228             :     {"LOOK_SUM_FLAG", 128, EDT_UByte, 1},
     229             :     {"RMS_EQUAL_FLAG", 129, EDT_UByte, 1},
     230             :     {"ANT_SCAL_FLAG", 130, EDT_UByte, 1},
     231             :     {"VGA_COM_ECHO_FLAG", 131, EDT_UByte, 1},
     232             :     {"VGA_COM_PULSE_2_FLAG", 132, EDT_UByte, 1},
     233             :     {"VGA_COM_PULSE_ZERO_FLAG", 133, EDT_UByte, 1},
     234             :     {"INV_FILT_COMP_FLAG", 134, EDT_UByte, 1},
     235             :     /*{"SPARE_2",                                        135, EDT_UByte, 6},*/
     236             :     {"RAW_DATA_ANALYSIS.1.NUM_GAPS", 141, EDT_UInt32, 1},
     237             :     {"RAW_DATA_ANALYSIS.1.NUM_MISSING_LINES", 145, EDT_UInt32, 1},
     238             :     {"RAW_DATA_ANALYSIS.1.RANGE_SAMP_SKIP", 149, EDT_UInt32, 1},
     239             :     {"RAW_DATA_ANALYSIS.1.RANGE_LINES_SKIP", 153, EDT_UInt32, 1},
     240             :     {"RAW_DATA_ANALYSIS.1.CALC_I_BIAS", 157, EDT_Float32, 1},
     241             :     {"RAW_DATA_ANALYSIS.1.CALC_Q_BIAS", 161, EDT_Float32, 1},
     242             :     {"RAW_DATA_ANALYSIS.1.CALC_I_STD_DEV", 165, EDT_Float32, 1},
     243             :     {"RAW_DATA_ANALYSIS.1.CALC_Q_STD_DEV", 169, EDT_Float32, 1},
     244             :     {"RAW_DATA_ANALYSIS.1.CALC_GAIN", 173, EDT_Float32, 1},
     245             :     {"RAW_DATA_ANALYSIS.1.CALC_QUAD", 177, EDT_Float32, 1},
     246             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_MAX", 181, EDT_Float32, 1},
     247             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_MIN", 185, EDT_Float32, 1},
     248             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_MAX", 189, EDT_Float32, 1},
     249             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_MIN", 193, EDT_Float32, 1},
     250             :     {"RAW_DATA_ANALYSIS.1.GAIN_MIN", 197, EDT_Float32, 1},
     251             :     {"RAW_DATA_ANALYSIS.1.GAIN_MAX", 201, EDT_Float32, 1},
     252             :     {"RAW_DATA_ANALYSIS.1.QUAD_MIN", 205, EDT_Float32, 1},
     253             :     {"RAW_DATA_ANALYSIS.1.QUAD_MAX", 209, EDT_Float32, 1},
     254             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_FLAG", 213, EDT_UByte, 1},
     255             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_FLAG", 214, EDT_UByte, 1},
     256             :     {"RAW_DATA_ANALYSIS.1.GAIN_FLAG", 215, EDT_UByte, 1},
     257             :     {"RAW_DATA_ANALYSIS.1.QUAD_FLAG", 216, EDT_UByte, 1},
     258             :     {"RAW_DATA_ANALYSIS.1.USED_I_BIAS", 217, EDT_Float32, 1},
     259             :     {"RAW_DATA_ANALYSIS.1.USED_Q_BIAS", 221, EDT_Float32, 1},
     260             :     {"RAW_DATA_ANALYSIS.1.USED_GAIN", 225, EDT_Float32, 1},
     261             :     {"RAW_DATA_ANALYSIS.1.USED_QUAD", 229, EDT_Float32, 1},
     262             :     {"RAW_DATA_ANALYSIS.2.NUM_GAPS", 233, EDT_UInt32, 1},
     263             :     {"RAW_DATA_ANALYSIS.2.NUM_MISSING_LINES", 237, EDT_UInt32, 1},
     264             :     {"RAW_DATA_ANALYSIS.2.RANGE_SAMP_SKIP", 241, EDT_UInt32, 1},
     265             :     {"RAW_DATA_ANALYSIS.2.RANGE_LINES_SKIP", 245, EDT_UInt32, 1},
     266             :     {"RAW_DATA_ANALYSIS.2.CALC_I_BIAS", 249, EDT_Float32, 1},
     267             :     {"RAW_DATA_ANALYSIS.2.CALC_Q_BIAS", 253, EDT_Float32, 1},
     268             :     {"RAW_DATA_ANALYSIS.2.CALC_I_STD_DEV", 257, EDT_Float32, 1},
     269             :     {"RAW_DATA_ANALYSIS.2.CALC_Q_STD_DEV", 261, EDT_Float32, 1},
     270             :     {"RAW_DATA_ANALYSIS.2.CALC_GAIN", 265, EDT_Float32, 1},
     271             :     {"RAW_DATA_ANALYSIS.2.CALC_QUAD", 269, EDT_Float32, 1},
     272             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_MAX", 273, EDT_Float32, 1},
     273             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_MIN", 277, EDT_Float32, 1},
     274             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_MAX", 281, EDT_Float32, 1},
     275             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_MIN", 285, EDT_Float32, 1},
     276             :     {"RAW_DATA_ANALYSIS.2.GAIN_MIN", 289, EDT_Float32, 1},
     277             :     {"RAW_DATA_ANALYSIS.2.GAIN_MAX", 293, EDT_Float32, 1},
     278             :     {"RAW_DATA_ANALYSIS.2.QUAD_MIN", 297, EDT_Float32, 1},
     279             :     {"RAW_DATA_ANALYSIS.2.QUAD_MAX", 301, EDT_Float32, 1},
     280             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_FLAG", 305, EDT_UByte, 1},
     281             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_FLAG", 306, EDT_UByte, 1},
     282             :     {"RAW_DATA_ANALYSIS.2.GAIN_FLAG", 307, EDT_UByte, 1},
     283             :     {"RAW_DATA_ANALYSIS.2.QUAD_FLAG", 308, EDT_UByte, 1},
     284             :     {"RAW_DATA_ANALYSIS.2.USED_I_BIAS", 309, EDT_Float32, 1},
     285             :     {"RAW_DATA_ANALYSIS.2.USED_Q_BIAS", 313, EDT_Float32, 1},
     286             :     {"RAW_DATA_ANALYSIS.2.USED_GAIN", 317, EDT_Float32, 1},
     287             :     {"RAW_DATA_ANALYSIS.2.USED_QUAD", 321, EDT_Float32, 1},
     288             :     /*{"SPARE_3",                                        325, EDT_UByte, 32},*/
     289             :     {"START_TIME.1.FIRST_OBT", 357, EDT_UInt32, 2},
     290             :     {"START_TIME.1.FIRST_MJD", 365, EDT_MJD, 1},
     291             :     {"START_TIME.2.FIRST_OBT", 377, EDT_UInt32, 2},
     292             :     {"START_TIME.2.FIRST_MJD", 385, EDT_MJD, 1},
     293             :     {"PARAMETER_CODES.FIRST_SWST_CODE", 397, EDT_UInt16, 5},
     294             :     {"PARAMETER_CODES.LAST_SWST_CODE", 407, EDT_UInt16, 5},
     295             :     {"PARAMETER_CODES.PRI_CODE", 417, EDT_UInt16, 5},
     296             :     {"PARAMETER_CODES.TX_PULSE_LEN_CODE", 427, EDT_UInt16, 5},
     297             :     {"PARAMETER_CODES.TX_BW_CODE", 437, EDT_UInt16, 5},
     298             :     {"PARAMETER_CODES.ECHO_WIN_LEN_CODE", 447, EDT_UInt16, 5},
     299             :     {"PARAMETER_CODES.UP_CODE", 457, EDT_UInt16, 5},
     300             :     {"PARAMETER_CODES.DOWN_CODE", 467, EDT_UInt16, 5},
     301             :     {"PARAMETER_CODES.RESAMP_CODE", 477, EDT_UInt16, 5},
     302             :     {"PARAMETER_CODES.BEAM_ADJ_CODE", 487, EDT_UInt16, 5},
     303             :     {"PARAMETER_CODES.BEAM_SET_NUM_CODE", 497, EDT_UInt16, 5},
     304             :     {"PARAMETER_CODES.TX_MONITOR_CODE", 507, EDT_UInt16, 5},
     305             :     /*{"SPARE_4",                                        517, EDT_UByte, 60},*/
     306             :     {"ERROR_COUNTERS.NUM_ERR_SWST", 577, EDT_UInt32, 1},
     307             :     {"ERROR_COUNTERS.NUM_ERR_PRI", 581, EDT_UInt32, 1},
     308             :     {"ERROR_COUNTERS.NUM_ERR_TX_PULSE_LEN", 585, EDT_UInt32, 1},
     309             :     {"ERROR_COUNTERS.NUM_ERR_TX_PULSE_BW", 589, EDT_UInt32, 1},
     310             :     {"ERROR_COUNTERS.NUM_ERR_ECHO_WIN_LEN", 593, EDT_UInt32, 1},
     311             :     {"ERROR_COUNTERS.NUM_ERR_UP", 597, EDT_UInt32, 1},
     312             :     {"ERROR_COUNTERS.NUM_ERR_DOWN", 601, EDT_UInt32, 1},
     313             :     {"ERROR_COUNTERS.NUM_ERR_RESAMP", 605, EDT_UInt32, 1},
     314             :     {"ERROR_COUNTERS.NUM_ERR_BEAM_ADJ", 609, EDT_UInt32, 1},
     315             :     {"ERROR_COUNTERS.NUM_ERR_BEAM_SET_NUM", 613, EDT_UInt32, 1},
     316             :     /*{"SPARE_5",                                        617, EDT_UByte, 26},*/
     317             :     {"IMAGE_PARAMETERS.FIRST_SWST_VALUE", 643, EDT_Float32, 5},
     318             :     {"IMAGE_PARAMETERS.LAST_SWST_VALUE", 663, EDT_Float32, 5},
     319             :     {"IMAGE_PARAMETERS.SWST_CHANGES", 683, EDT_UInt32, 5},
     320             :     {"IMAGE_PARAMETERS.PRF_VALUE", 703, EDT_Float32, 5},
     321             :     {"IMAGE_PARAMETERS.TX_PULSE_LEN_VALUE", 723, EDT_Float32, 5},
     322             :     {"IMAGE_PARAMETERS.TX_PULSE_BW_VALUE", 743, EDT_Float32, 5},
     323             :     {"IMAGE_PARAMETERS.ECHO_WIN_LEN_VALUE", 763, EDT_Float32, 5},
     324             :     {"IMAGE_PARAMETERS.UP_VALUE", 783, EDT_Float32, 5},
     325             :     {"IMAGE_PARAMETERS.DOWN_VALUE", 803, EDT_Float32, 5},
     326             :     {"IMAGE_PARAMETERS.RESAMP_VALUE", 823, EDT_Float32, 5},
     327             :     {"IMAGE_PARAMETERS.BEAM_ADJ_VALUE", 843, EDT_Float32, 5},
     328             :     {"IMAGE_PARAMETERS.BEAM_SET_VALUE", 863, EDT_UInt16, 5},
     329             :     {"IMAGE_PARAMETERS.TX_MONITOR_VALUE", 873, EDT_Float32, 5},
     330             :     /*{"SPARE_6",                                        893, EDT_UByte, 82},*/
     331             :     {"FIRST_PROC_RANGE_SAMP", 975, EDT_UInt32, 1},
     332             :     {"RANGE_REF", 979, EDT_Float32, 1},
     333             :     {"RANGE_SAMP_RATE", 983, EDT_Float32, 1},
     334             :     {"RADAR_FREQ", 987, EDT_Float32, 1},
     335             :     {"NUM_LOOKS_RANGE", 991, EDT_UInt16, 1},
     336             :     {"FILTER_WINDOW", 993, EDT_Char, 7},
     337             :     {"WINDOW_COEF_RANGE", 1000, EDT_Float32, 1},
     338             :     {"BANDWIDTH.LOOK_BW_RANGE", 1004, EDT_Float32, 5},
     339             :     {"BANDWIDTH.TOT_BW_RANGE", 1024, EDT_Float32, 5},
     340             :     {"NOMINAL_CHIRP.1.NOM_CHIRP_AMP", 1044, EDT_Float32, 4},
     341             :     {"NOMINAL_CHIRP.1.NOM_CHIRP_PHS", 1060, EDT_Float32, 4},
     342             :     {"NOMINAL_CHIRP.2.NOM_CHIRP_AMP", 1076, EDT_Float32, 4},
     343             :     {"NOMINAL_CHIRP.2.NOM_CHIRP_PHS", 1092, EDT_Float32, 4},
     344             :     {"NOMINAL_CHIRP.3.NOM_CHIRP_AMP", 1108, EDT_Float32, 4},
     345             :     {"NOMINAL_CHIRP.3.NOM_CHIRP_PHS", 1124, EDT_Float32, 4},
     346             :     {"NOMINAL_CHIRP.4.NOM_CHIRP_AMP", 1140, EDT_Float32, 4},
     347             :     {"NOMINAL_CHIRP.4.NOM_CHIRP_PHS", 1156, EDT_Float32, 4},
     348             :     {"NOMINAL_CHIRP.5.NOM_CHIRP_AMP", 1172, EDT_Float32, 4},
     349             :     {"NOMINAL_CHIRP.5.NOM_CHIRP_PHS", 1188, EDT_Float32, 4},
     350             :     /*{"SPARE_7",                                       1204, EDT_UByte, 60},*/
     351             :     {"NUM_LINES_PROC", 1264, EDT_UInt32, 1},
     352             :     {"NUM_LOOK_AZ", 1268, EDT_UInt16, 1},
     353             :     {"LOOK_BW_AZ", 1270, EDT_Float32, 1},
     354             :     {"TO_BW_AZ", 1274, EDT_Float32, 1},
     355             :     {"FILTER_AZ", 1278, EDT_Char, 7},
     356             :     {"FILTER_COEF_AZ", 1285, EDT_Float32, 1},
     357             :     {"AZ_FM_RATE", 1289, EDT_Float32, 3},
     358             :     {"AX_FM_ORIGIN", 1301, EDT_Float32, 1},
     359             :     {"DOP_AMB_CONF", 1305, EDT_Float32, 1},
     360             :     /*{"SPARE_8",                                       1309, EDT_UByte, 68},*/
     361             :     {"CALIBRATION_FACTORS.1.PROC_SCALING_FACT", 1377, EDT_Float32, 1},
     362             :     {"CALIBRATION_FACTORS.1.EXT_CAL_FACT", 1381, EDT_Float32, 1},
     363             :     {"CALIBRATION_FACTORS.2.PROC_SCALING_FACT", 1385, EDT_Float32, 1},
     364             :     {"CALIBRATION_FACTORS.2.EXT_CAL_FACT", 1389, EDT_Float32, 1},
     365             :     {"NOISE_ESTIMATION.NOISE_POWER_CORR", 1393, EDT_Float32, 5},
     366             :     {"NOISE_ESTIMATION.NUM_NOISE_LINES", 1413, EDT_UInt32, 5},
     367             :     /*{"SPARE_9",                                       1433, EDT_UByte, 76},*/
     368             :     {"OUTPUT_STATISTICS.1.OUT_MEAN", 1509, EDT_Float32, 1},
     369             :     {"OUTPUT_STATISTICS.1.OUT_IMAG_MEAN", 1513, EDT_Float32, 1},
     370             :     {"OUTPUT_STATISTICS.1.OUT_STD_DEV", 1517, EDT_Float32, 1},
     371             :     {"OUTPUT_STATISTICS.1.OUT_IMAG_STD_DEV", 1521, EDT_Float32, 1},
     372             :     {"OUTPUT_STATISTICS.2.OUT_MEAN", 1525, EDT_Float32, 1},
     373             :     {"OUTPUT_STATISTICS.2.OUT_IMAG_MEAN", 1529, EDT_Float32, 1},
     374             :     {"OUTPUT_STATISTICS.2.OUT_STD_DEV", 1533, EDT_Float32, 1},
     375             :     {"OUTPUT_STATISTICS.2.OUT_IMAG_STD_DEV", 1537, EDT_Float32, 1},
     376             :     /*{"SPARE_10",                                      1541, EDT_UByte, 52},*/
     377             :     {"ECHO_COMP", 1593, EDT_Char, 4},
     378             :     {"ECHO_COMP_RATIO", 1597, EDT_Char, 3},
     379             :     {"INIT_CAL_COMP", 1600, EDT_Char, 4},
     380             :     {"INIT_CAL_RATIO", 1604, EDT_Char, 3},
     381             :     {"PER_CAL_COMP", 1607, EDT_Char, 4},
     382             :     {"PER_CAL_RATIO", 1611, EDT_Char, 3},
     383             :     {"NOISE_COMP", 1614, EDT_Char, 4},
     384             :     {"NOISE_COMP_RATIO", 1618, EDT_Char, 3},
     385             :     /*{"SPARE_11",                                      1621, EDT_UByte, 64},*/
     386             :     {"BEAM_MERGE_SL_RANGE", 1685, EDT_UInt32, 4},
     387             :     {"BEAM_MERGE_ALG_PARAM", 1701, EDT_Float32, 4},
     388             :     {"LINES_PER_BURST", 1717, EDT_UInt32, 5},
     389             :     /*{"SPARE_12",                                      1737, EDT_UByte, 28},*/
     390             :     {"ORBIT_STATE_VECTORS.1.STATE_VECT_TIME_1", 1765, EDT_MJD, 1},
     391             :     {"ORBIT_STATE_VECTORS.1.X_POS_1", 1777, EDT_Int32, 1},
     392             :     {"ORBIT_STATE_VECTORS.1.Y_POS_1", 1781, EDT_Int32, 1},
     393             :     {"ORBIT_STATE_VECTORS.1.Z_POS_1", 1785, EDT_Int32, 1},
     394             :     {"ORBIT_STATE_VECTORS.1.X_VEL_1", 1789, EDT_Int32, 1},
     395             :     {"ORBIT_STATE_VECTORS.1.Y_VEL_1", 1793, EDT_Int32, 1},
     396             :     {"ORBIT_STATE_VECTORS.1.Z_VEL_1", 1797, EDT_Int32, 1},
     397             :     {"ORBIT_STATE_VECTORS.2.STATE_VECT_TIME_1", 1801, EDT_MJD, 1},
     398             :     {"ORBIT_STATE_VECTORS.2.X_POS_1", 1813, EDT_Int32, 1},
     399             :     {"ORBIT_STATE_VECTORS.2.Y_POS_1", 1817, EDT_Int32, 1},
     400             :     {"ORBIT_STATE_VECTORS.2.Z_POS_1", 1821, EDT_Int32, 1},
     401             :     {"ORBIT_STATE_VECTORS.2.X_VEL_1", 1825, EDT_Int32, 1},
     402             :     {"ORBIT_STATE_VECTORS.2.Y_VEL_1", 1829, EDT_Int32, 1},
     403             :     {"ORBIT_STATE_VECTORS.2.Z_VEL_1", 1833, EDT_Int32, 1},
     404             :     {"ORBIT_STATE_VECTORS.3.STATE_VECT_TIME_1", 1837, EDT_MJD, 1},
     405             :     {"ORBIT_STATE_VECTORS.3.X_POS_1", 1849, EDT_Int32, 1},
     406             :     {"ORBIT_STATE_VECTORS.3.Y_POS_1", 1853, EDT_Int32, 1},
     407             :     {"ORBIT_STATE_VECTORS.3.Z_POS_1", 1857, EDT_Int32, 1},
     408             :     {"ORBIT_STATE_VECTORS.3.X_VEL_1", 1861, EDT_Int32, 1},
     409             :     {"ORBIT_STATE_VECTORS.3.Y_VEL_1", 1865, EDT_Int32, 1},
     410             :     {"ORBIT_STATE_VECTORS.3.Z_VEL_1", 1869, EDT_Int32, 1},
     411             :     {"ORBIT_STATE_VECTORS.4.STATE_VECT_TIME_1", 1873, EDT_MJD, 1},
     412             :     {"ORBIT_STATE_VECTORS.4.X_POS_1", 1885, EDT_Int32, 1},
     413             :     {"ORBIT_STATE_VECTORS.4.Y_POS_1", 1889, EDT_Int32, 1},
     414             :     {"ORBIT_STATE_VECTORS.4.Z_POS_1", 1893, EDT_Int32, 1},
     415             :     {"ORBIT_STATE_VECTORS.4.X_VEL_1", 1897, EDT_Int32, 1},
     416             :     {"ORBIT_STATE_VECTORS.4.Y_VEL_1", 1901, EDT_Int32, 1},
     417             :     {"ORBIT_STATE_VECTORS.4.Z_VEL_1", 1905, EDT_Int32, 1},
     418             :     {"ORBIT_STATE_VECTORS.5.STATE_VECT_TIME_1", 1909, EDT_MJD, 1},
     419             :     {"ORBIT_STATE_VECTORS.5.X_POS_1", 1921, EDT_Int32, 1},
     420             :     {"ORBIT_STATE_VECTORS.5.Y_POS_1", 1925, EDT_Int32, 1},
     421             :     {"ORBIT_STATE_VECTORS.5.Z_POS_1", 1929, EDT_Int32, 1},
     422             :     {"ORBIT_STATE_VECTORS.5.X_VEL_1", 1933, EDT_Int32, 1},
     423             :     {"ORBIT_STATE_VECTORS.5.Y_VEL_1", 1937, EDT_Int32, 1},
     424             :     {"ORBIT_STATE_VECTORS.5.Z_VEL_1", 1941, EDT_Int32, 1},
     425             :     /*{"SPARE_13",                                      1945, EDT_UByte, 64},*/
     426             :     {NULL, 0, EDT_Unknown, 0}};
     427             : 
     428             : static const EnvisatFieldDescr ASAR_MAP_PROJECTION_GADS[] = {
     429             :     {"MAP_DESCRIPTOR", 0, EDT_Char, 32},
     430             :     {"SAMPLES", 32, EDT_UInt32, 1},
     431             :     {"LINES", 36, EDT_UInt32, 1},
     432             :     {"SAMPLE_SPACING", 40, EDT_Float32, 1},
     433             :     {"LINE_SPACING", 44, EDT_Float32, 1},
     434             :     {"ORIENTATION", 48, EDT_Float32, 1},
     435             :     /*{"SPARE_1",                                         52, EDT_UByte, 40},*/
     436             :     {"HEADING", 92, EDT_Float32, 1},
     437             :     {"ELLIPSOID_NAME", 96, EDT_Char, 32},
     438             :     {"SEMI_MAJOR", 128, EDT_Float32, 1},
     439             :     {"SEMI_MINOR", 132, EDT_Float32, 1},
     440             :     {"SHIFT_DX", 136, EDT_Float32, 1},
     441             :     {"SHIFT_DY", 140, EDT_Float32, 1},
     442             :     {"SHIFT_DZ", 144, EDT_Float32, 1},
     443             :     {"AVG_HEIGHT", 148, EDT_Float32, 1},
     444             :     /*{"SPARE_2",                                        152, EDT_UByte, 12},*/
     445             :     {"PROJECTION_DESCRIPTION", 164, EDT_Char, 32},
     446             :     {"UTM_DESCRIPTOR", 196, EDT_Char, 32},
     447             :     {"UTM_ZONE", 228, EDT_Char, 4},
     448             :     {"UTM_ORIGIN_EASTING", 232, EDT_Float32, 1},
     449             :     {"UTM_ORIGIN_NORTHING", 236, EDT_Float32, 1},
     450             :     {"UTM_CENTER_LONG", 240, EDT_Int32, 1},
     451             :     {"UTM_CENTER_LAT", 244, EDT_Int32, 1},
     452             :     {"UTM_PARA1", 248, EDT_Float32, 1},
     453             :     {"UTM_PARA2", 252, EDT_Float32, 1},
     454             :     {"UTM_SCALE", 256, EDT_Float32, 1},
     455             :     {"UPS_DESCRIPTOR", 260, EDT_Char, 32},
     456             :     {"UPS_CENTER_LONG", 292, EDT_Int32, 1},
     457             :     {"UPS_CENTER_LAT", 296, EDT_Int32, 1},
     458             :     {"UPS_SCALE", 300, EDT_Float32, 1},
     459             :     {"NSP_DESCRIPTOR", 304, EDT_Char, 32},
     460             :     {"ORIGIN_EASTING", 336, EDT_Float32, 1},
     461             :     {"ORIGIN_NORTHING", 340, EDT_Float32, 1},
     462             :     {"CENTER_LONG", 344, EDT_Int32, 1},
     463             :     {"CENTER_LAT", 348, EDT_Int32, 1},
     464             :     {"STANDARD_PARALLEL_PARAMETERS.PARA1", 352, EDT_Float32, 1},
     465             :     {"STANDARD_PARALLEL_PARAMETERS.PARA2", 356, EDT_Float32, 1},
     466             :     {"STANDARD_PARALLEL_PARAMETERS.PARA3", 360, EDT_Float32, 1},
     467             :     {"STANDARD_PARALLEL_PARAMETERS.PARA4", 364, EDT_Float32, 1},
     468             :     {"CENTRAL_MERIDIAN_PARAMETERS.CENTRAL_M1", 368, EDT_Float32, 1},
     469             :     {"CENTRAL_MERIDIAN_PARAMETERS.CENTRAL_M2", 372, EDT_Float32, 1},
     470             :     {"CENTRAL_MERIDIAN_PARAMETERS.CENTRAL_M3", 376, EDT_Float32, 1},
     471             :     /*{"PROJECTION_PARAMETERS.SPARE_3",                  380, EDT_UByte, 16},*/
     472             :     {"POSITION_NORTHINGS_EASTINGS.TL_NORTHING", 396, EDT_Float32, 1},
     473             :     {"POSITION_NORTHINGS_EASTINGS.TL_EASTING", 400, EDT_Float32, 1},
     474             :     {"POSITION_NORTHINGS_EASTINGS.TR_NORTHING", 404, EDT_Float32, 1},
     475             :     {"POSITION_NORTHINGS_EASTINGS.TR_EASTING", 408, EDT_Float32, 1},
     476             :     {"POSITION_NORTHINGS_EASTINGS.BR_NORTHING", 412, EDT_Float32, 1},
     477             :     {"POSITION_NORTHINGS_EASTINGS.BR_EASTING", 416, EDT_Float32, 1},
     478             :     {"POSITION_NORTHINGS_EASTINGS.BL_NORTHING", 420, EDT_Float32, 1},
     479             :     {"POSITION_NORTHINGS_EASTINGS.BL_EASTING", 424, EDT_Float32, 1},
     480             :     {"POSITION_LAT_LONG.TL_LAT", 428, EDT_Int32, 1},
     481             :     {"POSITION_LAT_LONG.TL_LONG", 432, EDT_Int32, 1},
     482             :     {"POSITION_LAT_LONG.TR_LAT", 436, EDT_Int32, 1},
     483             :     {"POSITION_LAT_LONG.TR_LONG", 440, EDT_Int32, 1},
     484             :     {"POSITION_LAT_LONG.BR_LAT", 444, EDT_Int32, 1},
     485             :     {"POSITION_LAT_LONG.BR_LONG", 448, EDT_Int32, 1},
     486             :     {"POSITION_LAT_LONG.BL_LAT", 452, EDT_Int32, 1},
     487             :     {"POSITION_LAT_LONG.BL_LONG", 456, EDT_Int32, 1},
     488             :     /*{"SPARE_4",                                        460, EDT_UByte, 32},*/
     489             :     {"IMAGE_TO_MAP_COEFS", 492, EDT_Float32, 8},
     490             :     {"MAP_TO_IMAGE_COEFS", 524, EDT_Float32, 8},
     491             :     /*{"SPARE_5",                                        556, EDT_UByte, 35},*/
     492             :     {NULL, 0, EDT_Unknown, 0}};
     493             : 
     494             : static const EnvisatFieldDescr ASAR_SQ_ADSR[] = {
     495             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     496             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     497             :     {"INPUT_MEAN_FLAG", 13, EDT_UByte, 1},
     498             :     {"INPUT_STD_DEV_FLAG", 14, EDT_UByte, 1},
     499             :     {"INPUT_GAPS_FLAG", 15, EDT_UByte, 1},
     500             :     {"INPUT_MISSING_LINES_FLAG", 16, EDT_UByte, 1},
     501             :     {"DOP_CEN_FLAG", 17, EDT_UByte, 1},
     502             :     {"DOP_AMB_FLAG", 18, EDT_UByte, 1},
     503             :     {"OUTPUT_MEAN_FLAG", 19, EDT_UByte, 1},
     504             :     {"OUTPUT_STD_DEV_FLAG", 20, EDT_UByte, 1},
     505             :     {"CHIRP_FLAG", 21, EDT_UByte, 1},
     506             :     {"MISSING_DATA_SETS_FLAG", 22, EDT_UByte, 1},
     507             :     {"INVALID_DOWNLINK_FLAG", 23, EDT_UByte, 1},
     508             :     /*{"SPARE_1",                                         24, EDT_UByte, 7},*/
     509             :     {"THRESH_CHIRP_BROADENING", 31, EDT_Float32, 1},
     510             :     {"THRESH_CHIRP_SIDELOBE", 35, EDT_Float32, 1},
     511             :     {"THRESH_CHIRP_ISLR", 39, EDT_Float32, 1},
     512             :     {"THRESH_INPUT_MEAN", 43, EDT_Float32, 1},
     513             :     {"EXP_INPUT_MEAN", 47, EDT_Float32, 1},
     514             :     {"THRESH_INPUT_STD_DEV", 51, EDT_Float32, 1},
     515             :     {"EXP_INPUT_STD_DEV", 55, EDT_Float32, 1},
     516             :     {"THRESH_DOP_CEN", 59, EDT_Float32, 1},
     517             :     {"THRESH_DOP_AMB", 63, EDT_Float32, 1},
     518             :     {"THRESH_OUTPUT_MEAN", 67, EDT_Float32, 1},
     519             :     {"EXP_OUTPUT_MEAN", 71, EDT_Float32, 1},
     520             :     {"THRESH_OUTPUT_STD_DEV", 75, EDT_Float32, 1},
     521             :     {"EXP_OUTPUT_STD_DEV", 79, EDT_Float32, 1},
     522             :     {"THRESH_INPUT_MISSING_LINES", 83, EDT_Float32, 1},
     523             :     {"THRESH_INPUT_GAPS", 87, EDT_Float32, 1},
     524             :     {"LINES_PER_GAPS", 91, EDT_UInt32, 1},
     525             :     /*{"SPARE_2",                                         95, EDT_UByte, 15},*/
     526             :     {"INPUT_MEAN", 110, EDT_Float32, 2},
     527             :     {"INPUT_STD_DEV", 118, EDT_Float32, 2},
     528             :     {"NUM_GAPS", 126, EDT_Float32, 1},
     529             :     {"NUM_MISSING_LINES", 130, EDT_Float32, 1},
     530             :     {"OUTPUT_MEAN", 134, EDT_Float32, 2},
     531             :     {"OUTPUT_STD_DEV", 142, EDT_Float32, 2},
     532             :     {"TOT_ERRORS", 150, EDT_UInt32, 1},
     533             :     /*{"SPARE_3",                                        154, EDT_UByte, 16},*/
     534             :     {NULL, 0, EDT_Unknown, 0}};
     535             : 
     536             : static const EnvisatFieldDescr ASAR_SR_GR_ADSR[] = {
     537             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     538             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     539             :     {"SLANT_RANGE_TIME", 13, EDT_Float32, 1},
     540             :     {"GROUND_RANGE_ORIGIN", 17, EDT_Float32, 1},
     541             :     {"SRGR_COEFF", 21, EDT_Float32, 5},
     542             :     /*{"SPARE_1",                                         41, EDT_UByte, 14},*/
     543             :     {NULL, 0, EDT_Unknown, 0}};
     544             : 
     545             : #if 0  /* Unused */
     546             : static const EnvisatFieldDescr ASAR_GEOLOCATION_ADSR[] = {
     547             :     {"ZERO_DOPPLER_TIME",                                  0, EDT_MJD,         1},
     548             :     {"ATTACH_FLAG",                                       12, EDT_UByte,       1},
     549             :     {"CENTER_LAT",                                        13, EDT_Int32,       1},
     550             :     {"CENTER_LONG",                                       17, EDT_Int32,       1},
     551             :     /*{"SPARE_1",                                         21, EDT_UByte,       4},*/
     552             :     {NULL,                                                 0, EDT_Unknown,     0}
     553             : };
     554             : #endif /* Unused */
     555             : 
     556             : static const EnvisatFieldDescr ASAR_PROCESSING_PARAMS_ADSR[] = {
     557             :     {"FIRST_ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     558             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     559             :     {"LAST_ZERO_DOPPLER_TIME", 13, EDT_MJD, 1},
     560             :     {"WORK_ORDER_ID", 25, EDT_Char, 12},
     561             :     {"TIME_DIFF", 37, EDT_Float32, 1},
     562             :     {"SWATH_ID", 41, EDT_Char, 3},
     563             :     {"RANGE_SPACING", 44, EDT_Float32, 1},
     564             :     {"AZIMUTH_SPACING", 48, EDT_Float32, 1},
     565             :     {"LINE_TIME_INTERVAL", 52, EDT_Float32, 1},
     566             :     {"NUM_OUTPUT_LINES", 56, EDT_UInt32, 1},
     567             :     {"NUM_SAMPLES_PER_LINE", 60, EDT_UInt32, 1},
     568             :     {"DATA_TYPE", 64, EDT_Char, 5},
     569             :     /*{"SPARE_1",                                         69, EDT_UByte, 51},*/
     570             :     {"DATA_ANALYSIS_FLAG", 120, EDT_UByte, 1},
     571             :     {"ANT_ELEV_CORR_FLAG", 121, EDT_UByte, 1},
     572             :     {"CHIRP_EXTRACT_FLAG", 122, EDT_UByte, 1},
     573             :     {"SRGR_FLAG", 123, EDT_UByte, 1},
     574             :     {"DOP_CEN_FLAG", 124, EDT_UByte, 1},
     575             :     {"DOP_AMB_FLAG", 125, EDT_UByte, 1},
     576             :     {"RANGE_SPREAD_COMP_FLAG", 126, EDT_UByte, 1},
     577             :     {"DETECTED_FLAG", 127, EDT_UByte, 1},
     578             :     {"LOOK_SUM_FLAG", 128, EDT_UByte, 1},
     579             :     {"RMS_EQUAL_FLAG", 129, EDT_UByte, 1},
     580             :     {"ANT_SCAL_FLAG", 130, EDT_UByte, 1},
     581             :     /*{"SPARE_2",                                        131, EDT_UByte, 10},*/
     582             :     {"RAW_DATA_ANALYSIS.1.NUM_GAPS", 141, EDT_UInt32, 1},
     583             :     {"RAW_DATA_ANALYSIS.1.NUM_MISSING_LINES", 145, EDT_UInt32, 1},
     584             :     {"RAW_DATA_ANALYSIS.1.RANGE_SAMP_SKIP", 149, EDT_UInt32, 1},
     585             :     {"RAW_DATA_ANALYSIS.1.RANGE_LINES_SKIP", 153, EDT_UInt32, 1},
     586             :     {"RAW_DATA_ANALYSIS.1.CALC_I_BIAS", 157, EDT_Float32, 1},
     587             :     {"RAW_DATA_ANALYSIS.1.CALC_Q_BIAS", 161, EDT_Float32, 1},
     588             :     {"RAW_DATA_ANALYSIS.1.CALC_I_STD_DEV", 165, EDT_Float32, 1},
     589             :     {"RAW_DATA_ANALYSIS.1.CALC_Q_STD_DEV", 169, EDT_Float32, 1},
     590             :     {"RAW_DATA_ANALYSIS.1.CALC_GAIN", 173, EDT_Float32, 1},
     591             :     {"RAW_DATA_ANALYSIS.1.CALC_QUAD", 177, EDT_Float32, 1},
     592             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_MAX", 181, EDT_Float32, 1},
     593             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_MIN", 185, EDT_Float32, 1},
     594             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_MAX", 189, EDT_Float32, 1},
     595             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_MIN", 193, EDT_Float32, 1},
     596             :     {"RAW_DATA_ANALYSIS.1.GAIN_MIN", 197, EDT_Float32, 1},
     597             :     {"RAW_DATA_ANALYSIS.1.GAIN_MAX", 201, EDT_Float32, 1},
     598             :     {"RAW_DATA_ANALYSIS.1.QUAD_MIN", 205, EDT_Float32, 1},
     599             :     {"RAW_DATA_ANALYSIS.1.QUAD_MAX", 209, EDT_Float32, 1},
     600             :     {"RAW_DATA_ANALYSIS.1.I_BIAS_FLAG", 213, EDT_UByte, 1},
     601             :     {"RAW_DATA_ANALYSIS.1.Q_BIAS_FLAG", 214, EDT_UByte, 1},
     602             :     {"RAW_DATA_ANALYSIS.1.GAIN_FLAG", 215, EDT_UByte, 1},
     603             :     {"RAW_DATA_ANALYSIS.1.QUAD_FLAG", 216, EDT_UByte, 1},
     604             :     {"RAW_DATA_ANALYSIS.1.USED_I_BIAS", 217, EDT_Float32, 1},
     605             :     {"RAW_DATA_ANALYSIS.1.USED_Q_BIAS", 221, EDT_Float32, 1},
     606             :     {"RAW_DATA_ANALYSIS.1.USED_GAIN", 225, EDT_Float32, 1},
     607             :     {"RAW_DATA_ANALYSIS.1.USED_QUAD", 229, EDT_Float32, 1},
     608             :     {"RAW_DATA_ANALYSIS.2.NUM_GAPS", 233, EDT_UInt32, 1},
     609             :     {"RAW_DATA_ANALYSIS.2.NUM_MISSING_LINES", 237, EDT_UInt32, 1},
     610             :     {"RAW_DATA_ANALYSIS.2.RANGE_SAMP_SKIP", 241, EDT_UInt32, 1},
     611             :     {"RAW_DATA_ANALYSIS.2.RANGE_LINES_SKIP", 245, EDT_UInt32, 1},
     612             :     {"RAW_DATA_ANALYSIS.2.CALC_I_BIAS", 249, EDT_Float32, 1},
     613             :     {"RAW_DATA_ANALYSIS.2.CALC_Q_BIAS", 253, EDT_Float32, 1},
     614             :     {"RAW_DATA_ANALYSIS.2.CALC_I_STD_DEV", 257, EDT_Float32, 1},
     615             :     {"RAW_DATA_ANALYSIS.2.CALC_Q_STD_DEV", 261, EDT_Float32, 1},
     616             :     {"RAW_DATA_ANALYSIS.2.CALC_GAIN", 265, EDT_Float32, 1},
     617             :     {"RAW_DATA_ANALYSIS.2.CALC_QUAD", 269, EDT_Float32, 1},
     618             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_MAX", 273, EDT_Float32, 1},
     619             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_MIN", 277, EDT_Float32, 1},
     620             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_MAX", 281, EDT_Float32, 1},
     621             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_MIN", 285, EDT_Float32, 1},
     622             :     {"RAW_DATA_ANALYSIS.2.GAIN_MIN", 289, EDT_Float32, 1},
     623             :     {"RAW_DATA_ANALYSIS.2.GAIN_MAX", 293, EDT_Float32, 1},
     624             :     {"RAW_DATA_ANALYSIS.2.QUAD_MIN", 297, EDT_Float32, 1},
     625             :     {"RAW_DATA_ANALYSIS.2.QUAD_MAX", 301, EDT_Float32, 1},
     626             :     {"RAW_DATA_ANALYSIS.2.I_BIAS_FLAG", 305, EDT_UByte, 1},
     627             :     {"RAW_DATA_ANALYSIS.2.Q_BIAS_FLAG", 306, EDT_UByte, 1},
     628             :     {"RAW_DATA_ANALYSIS.2.GAIN_FLAG", 307, EDT_UByte, 1},
     629             :     {"RAW_DATA_ANALYSIS.2.QUAD_FLAG", 308, EDT_UByte, 1},
     630             :     {"RAW_DATA_ANALYSIS.2.USED_I_BIAS", 309, EDT_Float32, 1},
     631             :     {"RAW_DATA_ANALYSIS.2.USED_Q_BIAS", 313, EDT_Float32, 1},
     632             :     {"RAW_DATA_ANALYSIS.2.USED_GAIN", 317, EDT_Float32, 1},
     633             :     {"RAW_DATA_ANALYSIS.2.USED_QUAD", 321, EDT_Float32, 1},
     634             :     /*{"SPARE_3",                                        325, EDT_UByte, 32},*/
     635             :     {"START_TIME.1.FIRST_OBT", 357, EDT_UInt32, 2},
     636             :     {"START_TIME.1.FIRST_MJD", 365, EDT_MJD, 1},
     637             :     {"START_TIME.2.FIRST_OBT", 377, EDT_UInt32, 2},
     638             :     {"START_TIME.2.FIRST_MJD", 385, EDT_MJD, 1},
     639             :     {"PARAMETER_CODES.SWST_CODE", 397, EDT_UInt16, 5},
     640             :     {"PARAMETER_CODES.LAST_SWST_CODE", 407, EDT_UInt16, 5},
     641             :     {"PARAMETER_CODES.PRI_CODE", 417, EDT_UInt16, 5},
     642             :     {"PARAMETER_CODES.TX_PULSE_LEN_CODE", 427, EDT_UInt16, 5},
     643             :     {"PARAMETER_CODES.TX_BW_CODE", 437, EDT_UInt16, 5},
     644             :     {"PARAMETER_CODES.ECHO_WIN_LEN_CODE", 447, EDT_UInt16, 5},
     645             :     {"PARAMETER_CODES.UP_CODE", 457, EDT_UInt16, 5},
     646             :     {"PARAMETER_CODES.DOWN_CODE", 467, EDT_UInt16, 5},
     647             :     {"PARAMETER_CODES.RESAMP_CODE", 477, EDT_UInt16, 5},
     648             :     {"PARAMETER_CODES.BEAM_ADJ_CODE", 487, EDT_UInt16, 5},
     649             :     {"PARAMETER_CODES.BEAM_SET_NUM_CODE", 497, EDT_UInt16, 5},
     650             :     {"PARAMETER_CODES.TX_MONITOR_CODE", 507, EDT_UInt16, 5},
     651             :     /*{"SPARE_4",                                        517, EDT_UByte, 60},*/
     652             :     {"ERROR_COUNTERS.NUM_ERR_SWST", 577, EDT_UInt32, 1},
     653             :     {"ERROR_COUNTERS.NUM_ERR_PRI", 581, EDT_UInt32, 1},
     654             :     {"ERROR_COUNTERS.NUM_ERR_TX_PULSE_LEN", 585, EDT_UInt32, 1},
     655             :     {"ERROR_COUNTERS.NUM_ERR_TX_PULSE_BW", 589, EDT_UInt32, 1},
     656             :     {"ERROR_COUNTERS.NUM_ERR_ECHO_WIN_LEN", 593, EDT_UInt32, 1},
     657             :     {"ERROR_COUNTERS.NUM_ERR_UP", 597, EDT_UInt32, 1},
     658             :     {"ERROR_COUNTERS.NUM_ERR_DOWN", 601, EDT_UInt32, 1},
     659             :     {"ERROR_COUNTERS.NUM_ERR_RESAMP", 605, EDT_UInt32, 1},
     660             :     {"ERROR_COUNTERS.NUM_ERR_BEAM_ADJ", 609, EDT_UInt32, 1},
     661             :     {"ERROR_COUNTERS.NUM_ERR_BEAM_SET_NUM", 613, EDT_UInt32, 1},
     662             :     /*{"SPARE_5",                                        617, EDT_UByte, 26},*/
     663             :     {"IMAGE_PARAMETERS.SWST_VALUE", 643, EDT_Float32, 5},
     664             :     {"IMAGE_PARAMETERS.LAST_SWST_VALUE", 663, EDT_Float32, 5},
     665             :     {"IMAGE_PARAMETERS.SWST_CHANGES", 683, EDT_UInt32, 5},
     666             :     {"IMAGE_PARAMETERS.PRF_VALUE", 703, EDT_Float32, 5},
     667             :     {"IMAGE_PARAMETERS.TX_PULSE_LEN_VALUE", 723, EDT_Float32, 5},
     668             :     {"IMAGE_PARAMETERS.TX_PULSE_BW_VALUE", 743, EDT_Float32, 5},
     669             :     {"IMAGE_PARAMETERS.ECHO_WIN_LEN_VALUE", 763, EDT_Float32, 5},
     670             :     {"IMAGE_PARAMETERS.UP_VALUE", 783, EDT_Float32, 5},
     671             :     {"IMAGE_PARAMETERS.DOWN_VALUE", 803, EDT_Float32, 5},
     672             :     {"IMAGE_PARAMETERS.RESAMP_VALUE", 823, EDT_Float32, 5},
     673             :     {"IMAGE_PARAMETERS.BEAM_ADJ_VALUE", 843, EDT_Float32, 5},
     674             :     {"IMAGE_PARAMETERS.BEAM_SET_VALUE", 863, EDT_UInt16, 5},
     675             :     {"IMAGE_PARAMETERS.TX_MONITOR_VALUE", 873, EDT_Float32, 5},
     676             :     /*{"SPARE_6",                                        893, EDT_UByte, 82},*/
     677             :     {"FIRST_PROC_RANGE_SAMP", 975, EDT_UInt32, 1},
     678             :     {"RANGE_REF", 979, EDT_Float32, 1},
     679             :     {"RANGE_SAMP_RATE", 983, EDT_Float32, 1},
     680             :     {"RADAR_FREQ", 987, EDT_Float32, 1},
     681             :     {"NUM_LOOKS_RANGE", 991, EDT_UInt16, 1},
     682             :     {"FILTER_RANGE", 993, EDT_Char, 7},
     683             :     {"FILTER_COEF_RANGE", 1000, EDT_Float32, 1},
     684             :     {"BANDWIDTH.LOOK_BW_RANGE", 1004, EDT_Float32, 5},
     685             :     {"BANDWIDTH.TOT_BW_RANGE", 1024, EDT_Float32, 5},
     686             :     {"NOMINAL_CHIRP.1.NOM_CHIRP_AMP", 1044, EDT_Float32, 4},
     687             :     {"NOMINAL_CHIRP.1.NOM_CHIRP_PHS", 1060, EDT_Float32, 4},
     688             :     {"NOMINAL_CHIRP.2.NOM_CHIRP_AMP", 1076, EDT_Float32, 4},
     689             :     {"NOMINAL_CHIRP.2.NOM_CHIRP_PHS", 1092, EDT_Float32, 4},
     690             :     {"NOMINAL_CHIRP.3.NOM_CHIRP_AMP", 1108, EDT_Float32, 4},
     691             :     {"NOMINAL_CHIRP.3.NOM_CHIRP_PHS", 1124, EDT_Float32, 4},
     692             :     {"NOMINAL_CHIRP.4.NOM_CHIRP_AMP", 1140, EDT_Float32, 4},
     693             :     {"NOMINAL_CHIRP.4.NOM_CHIRP_PHS", 1156, EDT_Float32, 4},
     694             :     {"NOMINAL_CHIRP.5.NOM_CHIRP_AMP", 1172, EDT_Float32, 4},
     695             :     {"NOMINAL_CHIRP.5.NOM_CHIRP_PHS", 1188, EDT_Float32, 4},
     696             :     /*{"SPARE_7",                                       1204, EDT_UByte, 60},*/
     697             :     {"NUM_LINES_PROC", 1264, EDT_UInt32, 1},
     698             :     {"NUM_LOOK_AZ", 1268, EDT_UInt16, 1},
     699             :     {"LOOK_BW_AZ", 1270, EDT_Float32, 1},
     700             :     {"TO_BW_AZ", 1274, EDT_Float32, 1},
     701             :     {"FILTER_AZ", 1278, EDT_Char, 7},
     702             :     {"FILTER_COEF_AZ", 1285, EDT_Float32, 1},
     703             :     {"AZ_FM_RATE", 1289, EDT_Float32, 3},
     704             :     {"AX_FM_ORIGIN", 1301, EDT_Float32, 1},
     705             :     {"DOP_AMB_CONF", 1305, EDT_Float32, 1},
     706             :     /*{"SPARE_8",                                       1309, EDT_UByte, 68},*/
     707             :     {"CALIBRATION_FACTORS.1.PROC_SCALING_FACT", 1377, EDT_Float32, 1},
     708             :     {"CALIBRATION_FACTORS.1.EXT_CAL_FACT", 1381, EDT_Float32, 1},
     709             :     {"CALIBRATION_FACTORS.2.PROC_SCALING_FACT", 1385, EDT_Float32, 1},
     710             :     {"CALIBRATION_FACTORS.2.EXT_CAL_FACT", 1389, EDT_Float32, 1},
     711             :     {"NOISE_ESTIMATION.NOISE_POWER_CORR", 1393, EDT_Float32, 5},
     712             :     {"NOISE_ESTIMATION.NUM_NOISE_LINES", 1413, EDT_UInt32, 5},
     713             :     /*{"SPARE_9",                                       1433, EDT_UByte, 76},*/
     714             :     {"OUTPUT_STATISTICS.1.OUT_MEAN", 1509, EDT_Float32, 1},
     715             :     {"OUTPUT_STATISTICS.1.OUT_IMAG_MEAN", 1513, EDT_Float32, 1},
     716             :     {"OUTPUT_STATISTICS.1.OUT_STD_DEV", 1517, EDT_Float32, 1},
     717             :     {"OUTPUT_STATISTICS.1.OUT_IMAG_STD_DEV", 1521, EDT_Float32, 1},
     718             :     {"OUTPUT_STATISTICS.2.OUT_MEAN", 1525, EDT_Float32, 1},
     719             :     {"OUTPUT_STATISTICS.2.OUT_IMAG_MEAN", 1529, EDT_Float32, 1},
     720             :     {"OUTPUT_STATISTICS.2.OUT_STD_DEV", 1533, EDT_Float32, 1},
     721             :     {"OUTPUT_STATISTICS.2.OUT_IMAG_STD_DEV", 1537, EDT_Float32, 1},
     722             :     /*{"SPARE_10",                                      1541, EDT_UByte, 52},*/
     723             :     {"ECHO_COMP", 1593, EDT_Char, 4},
     724             :     {"ECHO_COMP_RATIO", 1597, EDT_Char, 3},
     725             :     {"INIT_CAL_COMP", 1600, EDT_Char, 4},
     726             :     {"INIT_CAL_RATIO", 1604, EDT_Char, 3},
     727             :     {"PER_CAL_COMP", 1607, EDT_Char, 4},
     728             :     {"PER_CAL_RATIO", 1611, EDT_Char, 3},
     729             :     {"NOISE_COMP", 1614, EDT_Char, 4},
     730             :     {"NOISE_COMP_RATIO", 1618, EDT_Char, 3},
     731             :     /*{"SPARE_11",                                      1621, EDT_UByte, 64},*/
     732             :     {"BEAM_OVERLAP", 1685, EDT_UInt32, 4},
     733             :     {"LINES_PER_BURST", 1701, EDT_UInt32, 5},
     734             :     /*{"SPARE_12",                                      1721, EDT_UByte, 44},*/
     735             :     {"ORBIT_STATE_VECTORS.1.STATE_VECT_TIME_1", 1765, EDT_MJD, 1},
     736             :     {"ORBIT_STATE_VECTORS.1.X_POS_1", 1777, EDT_Int32, 1},
     737             :     {"ORBIT_STATE_VECTORS.1.Y_POS_1", 1781, EDT_Int32, 1},
     738             :     {"ORBIT_STATE_VECTORS.1.Z_POS_1", 1785, EDT_Int32, 1},
     739             :     {"ORBIT_STATE_VECTORS.1.X_VEL_1", 1789, EDT_Int32, 1},
     740             :     {"ORBIT_STATE_VECTORS.1.Y_VEL_1", 1793, EDT_Int32, 1},
     741             :     {"ORBIT_STATE_VECTORS.1.Z_VEL_1", 1797, EDT_Int32, 1},
     742             :     {"ORBIT_STATE_VECTORS.2.STATE_VECT_TIME_1", 1801, EDT_MJD, 1},
     743             :     {"ORBIT_STATE_VECTORS.2.X_POS_1", 1813, EDT_Int32, 1},
     744             :     {"ORBIT_STATE_VECTORS.2.Y_POS_1", 1817, EDT_Int32, 1},
     745             :     {"ORBIT_STATE_VECTORS.2.Z_POS_1", 1821, EDT_Int32, 1},
     746             :     {"ORBIT_STATE_VECTORS.2.X_VEL_1", 1825, EDT_Int32, 1},
     747             :     {"ORBIT_STATE_VECTORS.2.Y_VEL_1", 1829, EDT_Int32, 1},
     748             :     {"ORBIT_STATE_VECTORS.2.Z_VEL_1", 1833, EDT_Int32, 1},
     749             :     {"ORBIT_STATE_VECTORS.3.STATE_VECT_TIME_1", 1837, EDT_MJD, 1},
     750             :     {"ORBIT_STATE_VECTORS.3.X_POS_1", 1849, EDT_Int32, 1},
     751             :     {"ORBIT_STATE_VECTORS.3.Y_POS_1", 1853, EDT_Int32, 1},
     752             :     {"ORBIT_STATE_VECTORS.3.Z_POS_1", 1857, EDT_Int32, 1},
     753             :     {"ORBIT_STATE_VECTORS.3.X_VEL_1", 1861, EDT_Int32, 1},
     754             :     {"ORBIT_STATE_VECTORS.3.Y_VEL_1", 1865, EDT_Int32, 1},
     755             :     {"ORBIT_STATE_VECTORS.3.Z_VEL_1", 1869, EDT_Int32, 1},
     756             :     {"ORBIT_STATE_VECTORS.4.STATE_VECT_TIME_1", 1873, EDT_MJD, 1},
     757             :     {"ORBIT_STATE_VECTORS.4.X_POS_1", 1885, EDT_Int32, 1},
     758             :     {"ORBIT_STATE_VECTORS.4.Y_POS_1", 1889, EDT_Int32, 1},
     759             :     {"ORBIT_STATE_VECTORS.4.Z_POS_1", 1893, EDT_Int32, 1},
     760             :     {"ORBIT_STATE_VECTORS.4.X_VEL_1", 1897, EDT_Int32, 1},
     761             :     {"ORBIT_STATE_VECTORS.4.Y_VEL_1", 1901, EDT_Int32, 1},
     762             :     {"ORBIT_STATE_VECTORS.4.Z_VEL_1", 1905, EDT_Int32, 1},
     763             :     {"ORBIT_STATE_VECTORS.5.STATE_VECT_TIME_1", 1909, EDT_MJD, 1},
     764             :     {"ORBIT_STATE_VECTORS.5.X_POS_1", 1921, EDT_Int32, 1},
     765             :     {"ORBIT_STATE_VECTORS.5.Y_POS_1", 1925, EDT_Int32, 1},
     766             :     {"ORBIT_STATE_VECTORS.5.Z_POS_1", 1929, EDT_Int32, 1},
     767             :     {"ORBIT_STATE_VECTORS.5.X_VEL_1", 1933, EDT_Int32, 1},
     768             :     {"ORBIT_STATE_VECTORS.5.Y_VEL_1", 1937, EDT_Int32, 1},
     769             :     {"ORBIT_STATE_VECTORS.5.Z_VEL_1", 1941, EDT_Int32, 1},
     770             :     /*{"SPARE_13",                                      1945, EDT_UByte, 64},*/
     771             :     {"SLANT_RANGE_TIME", 2009, EDT_Float32, 1},
     772             :     {"DOP_COEF", 2013, EDT_Float32, 5},
     773             :     {"DOP_CONF", 2033, EDT_Float32, 1},
     774             :     /*{"SPARE_14",                                      2037, EDT_UByte, 14},*/
     775             :     {"CHIRP_WIDTH", 2051, EDT_Float32, 1},
     776             :     {"CHIRP_SIDELOBE", 2055, EDT_Float32, 1},
     777             :     {"CHIRP_ISLR", 2059, EDT_Float32, 1},
     778             :     {"CHIRP_PEAK_LOC", 2063, EDT_Float32, 1},
     779             :     {"CHIRP_POWER", 2067, EDT_Float32, 1},
     780             :     {"ELEV_CORR_FACTOR", 2071, EDT_Float32, 1},
     781             :     /*{"SPARE_15",                                      2075, EDT_UByte, 16},*/
     782             :     {"CAL_INFO.1.MAX_CAL", 2091, EDT_Float32, 3},
     783             :     {"CAL_INFO.1.AVG_CAL", 2103, EDT_Float32, 3},
     784             :     {"CAL_INFO.1.AVG_VAL_1A", 2115, EDT_Float32, 1},
     785             :     {"CAL_INFO.1.PHS_CAL", 2119, EDT_Float32, 4},
     786             :     {"CAL_INFO.2.MAX_CAL", 2135, EDT_Float32, 3},
     787             :     {"CAL_INFO.2.AVG_CAL", 2147, EDT_Float32, 3},
     788             :     {"CAL_INFO.2.AVG_VAL_1A", 2159, EDT_Float32, 1},
     789             :     {"CAL_INFO.2.PHS_CAL", 2163, EDT_Float32, 4},
     790             :     {"CAL_INFO.3.MAX_CAL", 2179, EDT_Float32, 3},
     791             :     {"CAL_INFO.3.AVG_CAL", 2191, EDT_Float32, 3},
     792             :     {"CAL_INFO.3.AVG_VAL_1A", 2203, EDT_Float32, 1},
     793             :     {"CAL_INFO.3.PHS_CAL", 2207, EDT_Float32, 4},
     794             :     {"CAL_INFO.4.MAX_CAL", 2223, EDT_Float32, 3},
     795             :     {"CAL_INFO.4.AVG_CAL", 2235, EDT_Float32, 3},
     796             :     {"CAL_INFO.4.AVG_VAL_1A", 2247, EDT_Float32, 1},
     797             :     {"CAL_INFO.4.PHS_CAL", 2251, EDT_Float32, 4},
     798             :     {"CAL_INFO.5.MAX_CAL", 2267, EDT_Float32, 3},
     799             :     {"CAL_INFO.5.AVG_CAL", 2279, EDT_Float32, 3},
     800             :     {"CAL_INFO.5.AVG_VAL_1A", 2291, EDT_Float32, 1},
     801             :     {"CAL_INFO.5.PHS_CAL", 2295, EDT_Float32, 4},
     802             :     {"CAL_INFO.6.MAX_CAL", 2311, EDT_Float32, 3},
     803             :     {"CAL_INFO.6.AVG_CAL", 2323, EDT_Float32, 3},
     804             :     {"CAL_INFO.6.AVG_VAL_1A", 2335, EDT_Float32, 1},
     805             :     {"CAL_INFO.6.PHS_CAL", 2339, EDT_Float32, 4},
     806             :     {"CAL_INFO.7.MAX_CAL", 2355, EDT_Float32, 3},
     807             :     {"CAL_INFO.7.AVG_CAL", 2367, EDT_Float32, 3},
     808             :     {"CAL_INFO.7.AVG_VAL_1A", 2379, EDT_Float32, 1},
     809             :     {"CAL_INFO.7.PHS_CAL", 2383, EDT_Float32, 4},
     810             :     {"CAL_INFO.8.MAX_CAL", 2399, EDT_Float32, 3},
     811             :     {"CAL_INFO.8.AVG_CAL", 2411, EDT_Float32, 3},
     812             :     {"CAL_INFO.8.AVG_VAL_1A", 2423, EDT_Float32, 1},
     813             :     {"CAL_INFO.8.PHS_CAL", 2427, EDT_Float32, 4},
     814             :     {"CAL_INFO.9.MAX_CAL", 2443, EDT_Float32, 3},
     815             :     {"CAL_INFO.9.AVG_CAL", 2455, EDT_Float32, 3},
     816             :     {"CAL_INFO.9.AVG_VAL_1A", 2467, EDT_Float32, 1},
     817             :     {"CAL_INFO.9.PHS_CAL", 2471, EDT_Float32, 4},
     818             :     {"CAL_INFO.10.MAX_CAL", 2487, EDT_Float32, 3},
     819             :     {"CAL_INFO.10.AVG_CAL", 2499, EDT_Float32, 3},
     820             :     {"CAL_INFO.10.AVG_VAL_1A", 2511, EDT_Float32, 1},
     821             :     {"CAL_INFO.10.PHS_CAL", 2515, EDT_Float32, 4},
     822             :     {"CAL_INFO.11.MAX_CAL", 2531, EDT_Float32, 3},
     823             :     {"CAL_INFO.11.AVG_CAL", 2543, EDT_Float32, 3},
     824             :     {"CAL_INFO.11.AVG_VAL_1A", 2555, EDT_Float32, 1},
     825             :     {"CAL_INFO.11.PHS_CAL", 2559, EDT_Float32, 4},
     826             :     {"CAL_INFO.12.MAX_CAL", 2575, EDT_Float32, 3},
     827             :     {"CAL_INFO.12.AVG_CAL", 2587, EDT_Float32, 3},
     828             :     {"CAL_INFO.12.AVG_VAL_1A", 2599, EDT_Float32, 1},
     829             :     {"CAL_INFO.12.PHS_CAL", 2603, EDT_Float32, 4},
     830             :     {"CAL_INFO.13.MAX_CAL", 2619, EDT_Float32, 3},
     831             :     {"CAL_INFO.13.AVG_CAL", 2631, EDT_Float32, 3},
     832             :     {"CAL_INFO.13.AVG_VAL_1A", 2643, EDT_Float32, 1},
     833             :     {"CAL_INFO.13.PHS_CAL", 2647, EDT_Float32, 4},
     834             :     {"CAL_INFO.14.MAX_CAL", 2663, EDT_Float32, 3},
     835             :     {"CAL_INFO.14.AVG_CAL", 2675, EDT_Float32, 3},
     836             :     {"CAL_INFO.14.AVG_VAL_1A", 2687, EDT_Float32, 1},
     837             :     {"CAL_INFO.14.PHS_CAL", 2691, EDT_Float32, 4},
     838             :     {"CAL_INFO.15.MAX_CAL", 2707, EDT_Float32, 3},
     839             :     {"CAL_INFO.15.AVG_CAL", 2719, EDT_Float32, 3},
     840             :     {"CAL_INFO.15.AVG_VAL_1A", 2731, EDT_Float32, 1},
     841             :     {"CAL_INFO.15.PHS_CAL", 2735, EDT_Float32, 4},
     842             :     {"CAL_INFO.16.MAX_CAL", 2751, EDT_Float32, 3},
     843             :     {"CAL_INFO.16.AVG_CAL", 2763, EDT_Float32, 3},
     844             :     {"CAL_INFO.16.AVG_VAL_1A", 2775, EDT_Float32, 1},
     845             :     {"CAL_INFO.16.PHS_CAL", 2779, EDT_Float32, 4},
     846             :     {"CAL_INFO.17.MAX_CAL", 2795, EDT_Float32, 3},
     847             :     {"CAL_INFO.17.AVG_CAL", 2807, EDT_Float32, 3},
     848             :     {"CAL_INFO.17.AVG_VAL_1A", 2819, EDT_Float32, 1},
     849             :     {"CAL_INFO.17.PHS_CAL", 2823, EDT_Float32, 4},
     850             :     {"CAL_INFO.18.MAX_CAL", 2839, EDT_Float32, 3},
     851             :     {"CAL_INFO.18.AVG_CAL", 2851, EDT_Float32, 3},
     852             :     {"CAL_INFO.18.AVG_VAL_1A", 2863, EDT_Float32, 1},
     853             :     {"CAL_INFO.18.PHS_CAL", 2867, EDT_Float32, 4},
     854             :     {"CAL_INFO.19.MAX_CAL", 2883, EDT_Float32, 3},
     855             :     {"CAL_INFO.19.AVG_CAL", 2895, EDT_Float32, 3},
     856             :     {"CAL_INFO.19.AVG_VAL_1A", 2907, EDT_Float32, 1},
     857             :     {"CAL_INFO.19.PHS_CAL", 2911, EDT_Float32, 4},
     858             :     {"CAL_INFO.20.MAX_CAL", 2927, EDT_Float32, 3},
     859             :     {"CAL_INFO.20.AVG_CAL", 2939, EDT_Float32, 3},
     860             :     {"CAL_INFO.20.AVG_VAL_1A", 2951, EDT_Float32, 1},
     861             :     {"CAL_INFO.20.PHS_CAL", 2955, EDT_Float32, 4},
     862             :     {"CAL_INFO.21.MAX_CAL", 2971, EDT_Float32, 3},
     863             :     {"CAL_INFO.21.AVG_CAL", 2983, EDT_Float32, 3},
     864             :     {"CAL_INFO.21.AVG_VAL_1A", 2995, EDT_Float32, 1},
     865             :     {"CAL_INFO.21.PHS_CAL", 2999, EDT_Float32, 4},
     866             :     {"CAL_INFO.22.MAX_CAL", 3015, EDT_Float32, 3},
     867             :     {"CAL_INFO.22.AVG_CAL", 3027, EDT_Float32, 3},
     868             :     {"CAL_INFO.22.AVG_VAL_1A", 3039, EDT_Float32, 1},
     869             :     {"CAL_INFO.22.PHS_CAL", 3043, EDT_Float32, 4},
     870             :     {"CAL_INFO.23.MAX_CAL", 3059, EDT_Float32, 3},
     871             :     {"CAL_INFO.23.AVG_CAL", 3071, EDT_Float32, 3},
     872             :     {"CAL_INFO.23.AVG_VAL_1A", 3083, EDT_Float32, 1},
     873             :     {"CAL_INFO.23.PHS_CAL", 3087, EDT_Float32, 4},
     874             :     {"CAL_INFO.24.MAX_CAL", 3103, EDT_Float32, 3},
     875             :     {"CAL_INFO.24.AVG_CAL", 3115, EDT_Float32, 3},
     876             :     {"CAL_INFO.24.AVG_VAL_1A", 3127, EDT_Float32, 1},
     877             :     {"CAL_INFO.24.PHS_CAL", 3131, EDT_Float32, 4},
     878             :     {"CAL_INFO.25.MAX_CAL", 3147, EDT_Float32, 3},
     879             :     {"CAL_INFO.25.AVG_CAL", 3159, EDT_Float32, 3},
     880             :     {"CAL_INFO.25.AVG_VAL_1A", 3171, EDT_Float32, 1},
     881             :     {"CAL_INFO.25.PHS_CAL", 3175, EDT_Float32, 4},
     882             :     {"CAL_INFO.26.MAX_CAL", 3191, EDT_Float32, 3},
     883             :     {"CAL_INFO.26.AVG_CAL", 3203, EDT_Float32, 3},
     884             :     {"CAL_INFO.26.AVG_VAL_1A", 3215, EDT_Float32, 1},
     885             :     {"CAL_INFO.26.PHS_CAL", 3219, EDT_Float32, 4},
     886             :     {"CAL_INFO.27.MAX_CAL", 3235, EDT_Float32, 3},
     887             :     {"CAL_INFO.27.AVG_CAL", 3247, EDT_Float32, 3},
     888             :     {"CAL_INFO.27.AVG_VAL_1A", 3259, EDT_Float32, 1},
     889             :     {"CAL_INFO.27.PHS_CAL", 3263, EDT_Float32, 4},
     890             :     {"CAL_INFO.28.MAX_CAL", 3279, EDT_Float32, 3},
     891             :     {"CAL_INFO.28.AVG_CAL", 3291, EDT_Float32, 3},
     892             :     {"CAL_INFO.28.AVG_VAL_1A", 3303, EDT_Float32, 1},
     893             :     {"CAL_INFO.28.PHS_CAL", 3307, EDT_Float32, 4},
     894             :     {"CAL_INFO.29.MAX_CAL", 3323, EDT_Float32, 3},
     895             :     {"CAL_INFO.29.AVG_CAL", 3335, EDT_Float32, 3},
     896             :     {"CAL_INFO.29.AVG_VAL_1A", 3347, EDT_Float32, 1},
     897             :     {"CAL_INFO.29.PHS_CAL", 3351, EDT_Float32, 4},
     898             :     {"CAL_INFO.30.MAX_CAL", 3367, EDT_Float32, 3},
     899             :     {"CAL_INFO.30.AVG_CAL", 3379, EDT_Float32, 3},
     900             :     {"CAL_INFO.30.AVG_VAL_1A", 3391, EDT_Float32, 1},
     901             :     {"CAL_INFO.30.PHS_CAL", 3395, EDT_Float32, 4},
     902             :     {"CAL_INFO.31.MAX_CAL", 3411, EDT_Float32, 3},
     903             :     {"CAL_INFO.31.AVG_CAL", 3423, EDT_Float32, 3},
     904             :     {"CAL_INFO.31.AVG_VAL_1A", 3435, EDT_Float32, 1},
     905             :     {"CAL_INFO.31.PHS_CAL", 3439, EDT_Float32, 4},
     906             :     {"CAL_INFO.32.MAX_CAL", 3455, EDT_Float32, 3},
     907             :     {"CAL_INFO.32.AVG_CAL", 3467, EDT_Float32, 3},
     908             :     {"CAL_INFO.32.AVG_VAL_1A", 3479, EDT_Float32, 1},
     909             :     {"CAL_INFO.32.PHS_CAL", 3483, EDT_Float32, 4},
     910             :     /*{"SPARE_16",                                      3499, EDT_UByte, 16},*/
     911             :     {"FIRST_LINE_TIME", 3515, EDT_MJD, 1},
     912             :     {"FIRST_LINE_TIE_POINTS.RANGE_SAMP_NUMS_FIRST", 3527, EDT_UInt32, 3},
     913             :     {"FIRST_LINE_TIE_POINTS.SLANT_RANGE_TIMES_FIRST", 3539, EDT_Float32, 3},
     914             :     {"FIRST_LINE_TIE_POINTS.INC_ANGLES_FIRST", 3551, EDT_Float32, 3},
     915             :     {"FIRST_LINE_TIE_POINTS.LATS_FIRST", 3563, EDT_Int32, 3},
     916             :     {"FIRST_LINE_TIE_POINTS.LONGS_FIRST", 3575, EDT_Int32, 3},
     917             :     {"MID_LINE_TIME", 3587, EDT_MJD, 1},
     918             :     {"MID_RANGE_LINE_NUMS", 3599, EDT_UInt32, 1},
     919             :     {"MID_LINE_TIE_POINTS.RANGE_SAMP_NUMS_MID", 3603, EDT_UInt32, 3},
     920             :     {"MID_LINE_TIE_POINTS.SLANT_RANGE_TIMES_MID", 3615, EDT_Float32, 3},
     921             :     {"MID_LINE_TIE_POINTS.INC_ANGLES_MID", 3627, EDT_Float32, 3},
     922             :     {"MID_LINE_TIE_POINTS.LATS_MID", 3639, EDT_Int32, 3},
     923             :     {"MID_LINE_TIE_POINTS.LONGS_MID", 3651, EDT_Int32, 3},
     924             :     {"LAST_LINE_TIME", 3663, EDT_MJD, 1},
     925             :     {"LAST_LINE_NUM", 3675, EDT_UInt32, 1},
     926             :     {"LAST_LINE_TIE_POINTS.RANGE_SAMP_NUMS_LAST", 3679, EDT_UInt32, 3},
     927             :     {"LAST_LINE_TIE_POINTS.SLANT_RANGE_TIMES_LAST", 3691, EDT_Float32, 3},
     928             :     {"LAST_LINE_TIE_POINTS.INC_ANGLES_LAST", 3703, EDT_Float32, 3},
     929             :     {"LAST_LINE_TIE_POINTS.LATS_LAST", 3715, EDT_Int32, 3},
     930             :     {"LAST_LINE_TIE_POINTS.LONGS_LAST", 3727, EDT_Int32, 3},
     931             :     {"SWST_OFFSET", 3739, EDT_Float32, 1},
     932             :     {"GROUND_RANGE_BIAS", 3743, EDT_Float32, 1},
     933             :     {"ELEV_ANGLE_BIAS", 3747, EDT_Float32, 1},
     934             :     {"IMAGETTE_RANGE_LEN", 3751, EDT_Float32, 1},
     935             :     {"IMAGETTE_AZ_LEN", 3755, EDT_Float32, 1},
     936             :     {"IMAGETTE_RANGE_RES", 3759, EDT_Float32, 1},
     937             :     {"GROUND_RES", 3763, EDT_Float32, 1},
     938             :     {"IMAGETTE_AZ_RES", 3767, EDT_Float32, 1},
     939             :     {"PLATFORM_ALT", 3771, EDT_Float32, 1},
     940             :     {"PLATFORM_VEL", 3775, EDT_Float32, 1},
     941             :     {"SLANT_RANGE", 3779, EDT_Float32, 1},
     942             :     {"CW_DRIFT", 3783, EDT_Float32, 1},
     943             :     {"WAVE_SUBCYCLE", 3787, EDT_UInt16, 1},
     944             :     {"EARTH_RADIUS", 3789, EDT_Float32, 1},
     945             :     {"SAT_HEIGHT", 3793, EDT_Float32, 1},
     946             :     {"FIRST_SAMPLE_SLANT_RANGE", 3797, EDT_Float32, 1},
     947             :     /*{"SPARE_17",                                      3801, EDT_UByte, 12},*/
     948             :     {"ELEVATION_PATTERN.SLANT_RANGE_TIME", 3813, EDT_Float32, 11},
     949             :     {"ELEVATION_PATTERN.ELEVATION_ANGLES", 3857, EDT_Float32, 11},
     950             :     {"ELEVATION_PATTERN.ANTENNA_PATTERN", 3901, EDT_Float32, 11},
     951             :     /*{"SPARE_18",                                      3945, EDT_UByte, 14},*/
     952             :     {NULL, 0, EDT_Unknown, 0}};
     953             : 
     954             : static const EnvisatFieldDescr ASAR_WAVE_SQ_ADSR[] = {
     955             :     {"ZERO_DOPPLER_TIME", 0, EDT_MJD, 1},
     956             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
     957             :     {"INPUT_MEAN_FLAG", 13, EDT_UByte, 1},
     958             :     {"INPUT_STD_DEV_FLAG", 14, EDT_UByte, 1},
     959             :     {"INPUT_GAPS_FLAG", 15, EDT_UByte, 1},
     960             :     {"INPUT_MISSING_LINES_FLAG", 16, EDT_UByte, 1},
     961             :     {"DOP_CEN_FLAG", 17, EDT_UByte, 1},
     962             :     {"DOP_AMB_FLAG", 18, EDT_UByte, 1},
     963             :     {"OUTPUT_MEAN_FLAG", 19, EDT_UByte, 1},
     964             :     {"OUTPUT_STD_DEV_FLAG", 20, EDT_UByte, 1},
     965             :     {"CHIRP_FLAG", 21, EDT_UByte, 1},
     966             :     {"MISSING_DATA_SETS_FLAG", 22, EDT_UByte, 1},
     967             :     {"INVALID_DOWNLINK_FLAG", 23, EDT_UByte, 1},
     968             :     /*{"SPARE_1",                                         24, EDT_UByte, 7},*/
     969             :     {"THRESH_CHIRP_BROADENING", 31, EDT_Float32, 1},
     970             :     {"THRESH_CHIRP_SIDELOBE", 35, EDT_Float32, 1},
     971             :     {"THRESH_CHIRP_ISLR", 39, EDT_Float32, 1},
     972             :     {"THRESH_INPUT_MEAN", 43, EDT_Float32, 1},
     973             :     {"EXP_INPUT_MEAN", 47, EDT_Float32, 1},
     974             :     {"THRESH_INPUT_STD_DEV", 51, EDT_Float32, 1},
     975             :     {"EXP_INPUT_STD_DEV", 55, EDT_Float32, 1},
     976             :     {"THRESH_DOP_CEN", 59, EDT_Float32, 1},
     977             :     {"THRESH_DOP_AMB", 63, EDT_Float32, 1},
     978             :     {"THRESH_OUTPUT_MEAN", 67, EDT_Float32, 1},
     979             :     {"EXP_OUTPUT_MEAN", 71, EDT_Float32, 1},
     980             :     {"THRESH_OUTPUT_STD_DEV", 75, EDT_Float32, 1},
     981             :     {"EXP_OUTPUT_STD_DEV", 79, EDT_Float32, 1},
     982             :     {"THRESH_INPUT_MISSING_LINES", 83, EDT_Float32, 1},
     983             :     {"THRESH_INPUT_GAPS", 87, EDT_Float32, 1},
     984             :     {"LINES_PER_GAPS", 91, EDT_UInt32, 1},
     985             :     /*{"SPARE_2",                                         95, EDT_UByte, 15},*/
     986             :     {"INPUT_MEAN", 110, EDT_Float32, 2},
     987             :     {"INPUT_STD_DEV", 118, EDT_Float32, 2},
     988             :     {"NUM_GAPS", 126, EDT_Float32, 1},
     989             :     {"NUM_MISSING_LINES", 130, EDT_Float32, 1},
     990             :     {"OUTPUT_MEAN", 134, EDT_Float32, 2},
     991             :     {"OUTPUT_STD_DEV", 142, EDT_Float32, 2},
     992             :     {"TOT_ERRORS", 150, EDT_UInt32, 1},
     993             :     /*{"SPARE_3",                                        154, EDT_UByte, 16},*/
     994             :     {"LAND_FLAG", 170, EDT_UByte, 1},
     995             :     {"LOOK_CONF_FLAG", 171, EDT_UByte, 1},
     996             :     {"INTER_LOOK_CONF_FLAG", 172, EDT_UByte, 1},
     997             :     {"AZ_CUTOFF_FLAG", 173, EDT_UByte, 1},
     998             :     {"AZ_CUTOFF_ITERATION_FLAG", 174, EDT_UByte, 1},
     999             :     {"PHASE_FLAG", 175, EDT_UByte, 1},
    1000             :     /*{"SPARE_4",                                        176, EDT_UByte, 4},*/
    1001             :     {"LOOK_CONF_THRESH", 180, EDT_Float32, 2},
    1002             :     {"INTER_LOOK_CONF_THRESH", 188, EDT_Float32, 1},
    1003             :     {"AZ_CUTOFF_THRESH", 192, EDT_Float32, 1},
    1004             :     {"AZ_CUTOFF_ITERATIONS_THRESH", 196, EDT_UInt32, 1},
    1005             :     {"PHASE_PEAK_THRESH", 200, EDT_Float32, 1},
    1006             :     {"PHASE_CROSS_THRESH", 204, EDT_Float32, 1},
    1007             :     /*{"SPARE_5",                                        208, EDT_UByte, 12},*/
    1008             :     {"LOOK_CONF", 220, EDT_Float32, 1},
    1009             :     {"INTER_LOOK_CONF", 224, EDT_Float32, 1},
    1010             :     {"AZ_CUTOFF", 228, EDT_Float32, 1},
    1011             :     {"PHASE_PEAK_CONF", 232, EDT_Float32, 1},
    1012             :     {"PHASE_CROSS_CONF", 236, EDT_Float32, 1},
    1013             :     /*{"SPARE_6",                                        240, EDT_UByte, 12},*/
    1014             :     {NULL, 0, EDT_Unknown, 0}};
    1015             : 
    1016             : /* --- MERIS record descriptors -------------------------------------------- */
    1017             : static const EnvisatFieldDescr MERIS_1P_QUALITY_ADSR[] = {
    1018             :     {"DSR_TIME", 0, EDT_MJD, 1},
    1019             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
    1020             :     {"RANGE_FLAG", 13, EDT_UInt16, 5},
    1021             :     {"RANGE_BLIND_FLAG", 23, EDT_UInt16, 5},
    1022             :     {NULL, 0, EDT_Unknown, 0}};
    1023             : 
    1024             : static const EnvisatFieldDescr MERIS_1P_SCALING_FACTOR_GADS[] = {
    1025             :     {"SCALING_FACTOR_ALT", 0, EDT_Float32, 1},
    1026             :     {"SCALING_FACTOR_ROUGH", 4, EDT_Float32, 1},
    1027             :     {"SCALING_FACTOR_ZON_WIND", 8, EDT_Float32, 1},
    1028             :     {"SCALING_FACTOR_MERR_WIND", 12, EDT_Float32, 1},
    1029             :     {"SCALING_FACTOR_ATM_PRES", 16, EDT_Float32, 1},
    1030             :     {"SCALING_FACTOR_OZONE", 20, EDT_Float32, 1},
    1031             :     {"SCALING_FACTOR_REL_HUM", 24, EDT_Float32, 1},
    1032             :     {"SCALING_FACTOR_RAD", 28, EDT_Float32, 15},
    1033             :     {"GAIN_SETTINGS", 88, EDT_UByte, 80},
    1034             :     {"SAMPLING_RATE", 168, EDT_UInt32, 1},
    1035             :     {"SUN_SPECTRAL_FLUX", 172, EDT_Float32, 15},
    1036             :     /*{"SPARE_1",                                        232, EDT_UByte, 60},*/
    1037             :     {NULL, 0, EDT_Unknown, 0}};
    1038             : 
    1039             : static const EnvisatFieldDescr MERIS_2P_QUALITY_ADSR[] = {
    1040             :     {"DSR_TIME", 0, EDT_MJD, 1},
    1041             :     {"ATTACH_FLAG", 12, EDT_UByte, 1},
    1042             :     {"PERC_WATER_ABS_AERO", 13, EDT_UByte, 1},
    1043             :     {"PERC_WATER", 14, EDT_UByte, 1},
    1044             :     {"PERC_DDV_LAND", 15, EDT_UByte, 1},
    1045             :     {"PERC_LAND", 16, EDT_UByte, 1},
    1046             :     {"PERC_CLOUD", 17, EDT_UByte, 1},
    1047             :     {"PERC_LOW_POLY_PRESS", 18, EDT_UByte, 1},
    1048             :     {"PERC_LOW_NEURAL_PRESS", 19, EDT_UByte, 1},
    1049             :     {"PERC_OUT_RAN_INP_WVAPOUR", 20, EDT_UByte, 1},
    1050             :     {"PER_OUT_RAN_OUTP_WVAPOUR", 21, EDT_UByte, 1},
    1051             :     {"PERC_OUT_RANGE_INP_CL", 22, EDT_UByte, 1},
    1052             :     {"PERC_OUT_RAN_OUTP_CL", 23, EDT_UByte, 1},
    1053             :     {"PERC_IN_RAN_INP_LAND", 24, EDT_UByte, 1},
    1054             :     {"PERC_OUT_RAN_OUTP_LAND", 25, EDT_UByte, 1},
    1055             :     {"PERC_OUT_RAN_INP_OCEAN", 26, EDT_UByte, 1},
    1056             :     {"PERC_OUT_RAN_OUTP_OCEAN", 27, EDT_UByte, 1},
    1057             :     {"PERC_OUT_RAN_INP_CASE1", 28, EDT_UByte, 1},
    1058             :     {"PERC_OUT_RAN_OUTP_CASE1", 29, EDT_UByte, 1},
    1059             :     {"PERC_OUT_RAN_INP_CASE2", 30, EDT_UByte, 1},
    1060             :     {"PERC_OUT_RAN_OUTP_CASE2", 31, EDT_UByte, 1},
    1061             :     {NULL, 0, EDT_Unknown, 0}};
    1062             : 
    1063             : static const EnvisatFieldDescr MERIS_2P_SCALING_FACTOR_GADS[] = {
    1064             :     {"SCALING_FACTOR_ALT", 0, EDT_Float32, 1},
    1065             :     {"SCALING_FACTOR_ROUGH", 4, EDT_Float32, 1},
    1066             :     {"SCALING_FACTOR_ZON_WIND", 8, EDT_Float32, 1},
    1067             :     {"SCALING_FACTOR_MERR_WIND", 12, EDT_Float32, 1},
    1068             :     {"SCALING_FACTOR_ATM_PRES", 16, EDT_Float32, 1},
    1069             :     {"SCALING_FACTOR_OZONE", 20, EDT_Float32, 1},
    1070             :     {"SCALING_FACTOR_REL_HUMID", 24, EDT_Float32, 1},
    1071             :     {"SCALING_FACTOR_REFLEC", 28, EDT_Float32, 13},
    1072             :     {"SCALING_FACTOR_ALGAL_PIG_IND", 80, EDT_Float32, 1},
    1073             :     {"SCALING_FACTOR_YELLOW_SUBS", 84, EDT_Float32, 1},
    1074             :     {"SCALING_FACTOR_SUSP_SED", 88, EDT_Float32, 1},
    1075             :     {"SCALING_FACTOR_AERO_EPSILON", 92, EDT_Float32, 1},
    1076             :     {"SCALING_FACTOR_AER_OPT_THICK", 96, EDT_Float32, 1},
    1077             :     {"SCALING_FACTOR_CL_OPT_THICK", 100, EDT_Float32, 1},
    1078             :     {"SCALING_FACTOR_SURF_PRES", 104, EDT_Float32, 1},
    1079             :     {"SCALING_FACTOR_WVAPOUR", 108, EDT_Float32, 1},
    1080             :     {"SCALING_FACTOR_PHOTOSYN_RAD", 112, EDT_Float32, 1},
    1081             :     {"SCALING_FACTOR_TOA_VEG", 116, EDT_Float32, 1},
    1082             :     {"SCALING_FACTOR_BOA_VEG", 120, EDT_Float32, 1},
    1083             :     {"SCALING_FACTOR_CLOUD_ALBEDO", 124, EDT_Float32, 1},
    1084             :     {"SCALING_FACTOR_CLOUD_TOP_PRESS", 128, EDT_Float32, 1},
    1085             :     {"OFF_REFLEC", 132, EDT_Float32, 13},
    1086             :     {"OFFSET_ALGAL", 184, EDT_Float32, 1},
    1087             :     {"OFFSET_YELLOW_SUBS", 188, EDT_Float32, 1},
    1088             :     {"OFFSET_TOTAL_SUSP", 192, EDT_Float32, 1},
    1089             :     {"OFFSET_AERO_EPSILON", 196, EDT_Float32, 1},
    1090             :     {"OFFSET_AER_OPT_THICK", 200, EDT_Float32, 1},
    1091             :     {"OFFSET_CL_OPT_THICK", 204, EDT_Float32, 1},
    1092             :     {"OFFSET_SURF_PRES", 208, EDT_Float32, 1},
    1093             :     {"OFFSET_WVAPOUR", 212, EDT_Float32, 1},
    1094             :     {"OFFSET_PHOTOSYN_RAD", 216, EDT_Float32, 1},
    1095             :     {"OFFSET_TOA_VEG", 220, EDT_Float32, 1},
    1096             :     {"OFFSET_BOA_VEG", 224, EDT_Float32, 1},
    1097             :     {"OFFSET_CLOUD_ALBEDO", 228, EDT_Float32, 1},
    1098             :     {"OFFSET_CLOUD_TOP_PRESS", 232, EDT_Float32, 1},
    1099             :     {"GAIN_SETTINGS", 236, EDT_UByte, 80},
    1100             :     {"SAMPLING_RATE", 316, EDT_UInt32, 1},
    1101             :     {"SUN_SPECTRAL_FLUX", 320, EDT_Float32, 15},
    1102             :     {"SCALING_FACTOR_RECT_REFL_NIR", 380, EDT_Float32, 1},
    1103             :     {"OFFSET_RECT_REFL_NIR", 384, EDT_Float32, 1},
    1104             :     {"SCALING_FACTOR_RECT_REFL_RED", 388, EDT_Float32, 1},
    1105             :     {"OFFSET_RECT_REFL_RED", 392, EDT_Float32, 1},
    1106             :     /*{"SPARE_1",                                        396, EDT_UByte, 44},*/
    1107             :     {NULL, 0, EDT_Unknown, 0}};
    1108             : 
    1109             : static const EnvisatFieldDescr MERIS_2P_C_SCALING_FACTOR_GADS[] = {
    1110             :     {"SCALING_FACTOR_CLOUD_OPT_THICK", 0, EDT_Float32, 1},
    1111             :     {"SCALING_FACTOR_CLOUD_TOP_PRESS", 4, EDT_Float32, 1},
    1112             :     {"SCALING_FACTOR_WVAPOUR", 8, EDT_Float32, 1},
    1113             :     {"OFFSET_CL_OPT_THICK", 12, EDT_Float32, 1},
    1114             :     {"OFFSET_CLOUD_TOP_PRESS", 16, EDT_Float32, 1},
    1115             :     {"OFFSET_WVAPOUR", 20, EDT_Float32, 1},
    1116             :     /*{"SPARE_1",                                         24, EDT_UByte, 52},*/
    1117             :     {NULL, 0, EDT_Unknown, 0}};
    1118             : 
    1119             : static const EnvisatFieldDescr MERIS_2P_V_SCALING_FACTOR_GADS[] = {
    1120             :     {"SCALING_FACTOR_TOA_VEGETATION_INDEX", 0, EDT_Float32, 1},
    1121             :     {"SCALING_FACTOR_BOA_VEGETATION_INDEX", 4, EDT_Float32, 1},
    1122             :     {"OFFSET_TOA_VEGETAYION_INDEX", 8, EDT_Float32, 1},
    1123             :     {"OFFSET_BOA_VEGETAYION_INDEX", 12, EDT_Float32, 1},
    1124             :     /*{"SPARE_1",                                         16, EDT_UByte, 60},*/
    1125             :     {NULL, 0, EDT_Unknown, 0}};
    1126             : 
    1127             : static const EnvisatRecordDescr aASAR_Records[] = {
    1128             :     {"MDS1 ANTENNA ELEV PATT ADS", ASAR_ANTENNA_ELEV_PATT_ADSR},
    1129             :     {"MDS2 ANTENNA ELEV PATT ADS", ASAR_ANTENNA_ELEV_PATT_ADSR},
    1130             :     {"CHIRP PARAMS ADS", ASAR_CHIRP_PARAMS_ADSR},
    1131             :     {"DOP CENTROID COEFFS ADS", ASAR_DOP_CENTROID_COEFFS_ADSR},
    1132             :     /*{"GEOLOCATION GRID ADS", ASAR_GEOLOCATION_GRID_ADSR},*/
    1133             :     {"MAIN PROCESSING PARAMS ADS", ASAR_MAIN_PROCESSING_PARAMS_ADSR},
    1134             :     {"MAP PROJECTION GADS", ASAR_MAP_PROJECTION_GADS},
    1135             :     {"MDS1 SQ ADS", ASAR_SQ_ADSR},
    1136             :     {"MDS2 SQ ADS", ASAR_SQ_ADSR},
    1137             :     {"SR GR ADS", ASAR_SR_GR_ADSR},
    1138             :     /* WAVE */
    1139             :     /*{"GEOLOCATION ADS", ASAR_GEOLOCATION_ADSR},*/
    1140             :     {"PROCESSING PARAMS ADS", ASAR_PROCESSING_PARAMS_ADSR},
    1141             :     {"SQ ADS", ASAR_WAVE_SQ_ADSR},
    1142             :     {NULL, NULL}};
    1143             : 
    1144             : static const EnvisatRecordDescr aMERIS_1P_Records[] = {
    1145             :     {"Quality ADS", MERIS_1P_QUALITY_ADSR},
    1146             :     {"Scaling Factor GADS", MERIS_1P_SCALING_FACTOR_GADS},
    1147             :     {NULL, NULL}};
    1148             : 
    1149             : static const EnvisatRecordDescr aMERIS_2P_Records[] = {
    1150             :     {"Quality ADS", MERIS_2P_QUALITY_ADSR},
    1151             :     {"Scaling Factor GADS", MERIS_2P_SCALING_FACTOR_GADS},
    1152             :     {NULL, NULL}};
    1153             : 
    1154             : static const EnvisatRecordDescr aMERIS_2P_C_Records[] = {
    1155             :     {"Quality ADS", MERIS_2P_QUALITY_ADSR},
    1156             :     {"Scaling Factor GADS", MERIS_2P_C_SCALING_FACTOR_GADS},
    1157             :     {NULL, NULL}};
    1158             : 
    1159             : static const EnvisatRecordDescr aMERIS_2P_V_Records[] = {
    1160             :     {"Quality ADS", MERIS_2P_QUALITY_ADSR},
    1161             :     {"Scaling Factor GADS", MERIS_2P_V_SCALING_FACTOR_GADS},
    1162             :     {NULL, NULL}};
    1163             : 
    1164             : const EnvisatRecordDescr *
    1165           0 : EnvisatFile_GetRecordDescriptor(const char *pszProduct, const char *pszDataset)
    1166             : {
    1167           0 :     const EnvisatRecordDescr *paRecords = NULL;
    1168           0 :     const EnvisatRecordDescr *pRecordDescr = NULL;
    1169             :     int nLen;
    1170             : 
    1171           0 :     if (STARTS_WITH_CI(pszProduct, "ASA"))
    1172           0 :         paRecords = aASAR_Records;
    1173           0 :     else if (STARTS_WITH_CI(pszProduct, "MER"))
    1174             :     {
    1175           0 :         if (STARTS_WITH_CI(pszProduct + 6, "C_2P"))
    1176           0 :             paRecords = aMERIS_2P_C_Records;
    1177           0 :         else if (STARTS_WITH_CI(pszProduct + 6, "V_2P"))
    1178           0 :             paRecords = aMERIS_2P_V_Records;
    1179           0 :         else if (STARTS_WITH_CI(pszProduct + 8, "1P"))
    1180           0 :             paRecords = aMERIS_1P_Records;
    1181           0 :         else if (STARTS_WITH_CI(pszProduct + 8, "2P"))
    1182           0 :             paRecords = aMERIS_2P_Records;
    1183             :         else
    1184           0 :             return NULL;
    1185             :     }
    1186           0 :     else if (STARTS_WITH_CI(pszProduct, "SAR"))
    1187             :         /* ERS products in ENVISAT format have the same records of ASAR ones */
    1188           0 :         paRecords = aASAR_Records;
    1189             :     else
    1190           0 :         return NULL;
    1191             : 
    1192             :     /* strip trailing spaces */
    1193           0 :     for (nLen = (int)strlen(pszDataset); nLen && pszDataset[nLen - 1] == ' ';
    1194           0 :          --nLen)
    1195             :         ;
    1196             : 
    1197           0 :     pRecordDescr = paRecords;
    1198           0 :     while (pRecordDescr->szName != NULL)
    1199             :     {
    1200           0 :         if (EQUALN(pRecordDescr->szName, pszDataset, nLen))
    1201           0 :             return pRecordDescr;
    1202             :         else
    1203           0 :             ++pRecordDescr;
    1204             :     }
    1205             : 
    1206           0 :     return NULL;
    1207             : }
    1208             : 
    1209           0 : CPLErr EnvisatFile_GetFieldAsString(const void *pRecord, int nRecLen,
    1210             :                                     const EnvisatFieldDescr *pField,
    1211             :                                     char *szBuf, size_t nBufLen)
    1212             : {
    1213             :     int ret;
    1214           0 :     int i, nOffset = 0;
    1215             :     const GByte *pData;
    1216             : 
    1217           0 :     if (pField->nOffset >= nRecLen)
    1218             :     {
    1219           0 :         CPLDebug("EnvisatDataset",
    1220             :                  "Field offset (%d) is greater than the record length (%d).",
    1221             :                  pField->nOffset, nRecLen);
    1222             : 
    1223           0 :         return CE_Failure;
    1224             :     }
    1225             : 
    1226           0 :     pData = (const GByte *)pRecord + pField->nOffset;
    1227             : 
    1228           0 :     szBuf[0] = '\0';
    1229             : 
    1230           0 :     switch (pField->eType)
    1231             :     {
    1232           0 :         case EDT_Char:
    1233           0 :             memcpy((void *)szBuf, pData, pField->nCount);
    1234           0 :             szBuf[pField->nCount] = '\0';
    1235           0 :             break;
    1236           0 :         case EDT_UByte:
    1237             :         case EDT_SByte:
    1238           0 :             for (i = 0; i < pField->nCount; ++i)
    1239             :             {
    1240           0 :                 if (i > 0)
    1241           0 :                     szBuf[nOffset++] = ' ';
    1242           0 :                 ret = snprintf(szBuf + nOffset, nBufLen - nOffset, "%d",
    1243           0 :                                ((const char *)pData)[i]);
    1244           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1245           0 :                     return CE_Failure;
    1246           0 :                 nOffset += ret;
    1247             :             }
    1248           0 :             break;
    1249           0 :         case EDT_Int16:
    1250           0 :             for (i = 0; i < pField->nCount; ++i)
    1251             :             {
    1252             :                 GInt16 nVal;
    1253           0 :                 if (i > 0)
    1254           0 :                     szBuf[nOffset++] = ' ';
    1255           0 :                 memcpy(&nVal, pData + i * sizeof(nVal), sizeof(nVal));
    1256           0 :                 ret = snprintf(szBuf + nOffset, nBufLen - nOffset, "%d",
    1257           0 :                                CPL_MSBWORD16(nVal));
    1258           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1259           0 :                     return CE_Failure;
    1260           0 :                 nOffset += ret;
    1261             :             }
    1262           0 :             break;
    1263           0 :         case EDT_UInt16:
    1264           0 :             for (i = 0; i < pField->nCount; ++i)
    1265             :             {
    1266             :                 GUInt16 nVal;
    1267           0 :                 if (i > 0)
    1268           0 :                     szBuf[nOffset++] = ' ';
    1269           0 :                 memcpy(&nVal, pData + i * sizeof(nVal), sizeof(nVal));
    1270           0 :                 ret = snprintf(szBuf + nOffset, nBufLen - nOffset, "%u",
    1271           0 :                                CPL_MSBWORD16(nVal));
    1272           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1273           0 :                     return CE_Failure;
    1274           0 :                 nOffset += ret;
    1275             :             }
    1276           0 :             break;
    1277           0 :         case EDT_Int32:
    1278           0 :             for (i = 0; i < pField->nCount; ++i)
    1279             :             {
    1280             :                 GInt32 nVal;
    1281           0 :                 if (i > 0)
    1282           0 :                     szBuf[nOffset++] = ' ';
    1283           0 :                 memcpy(&nVal, pData + i * sizeof(nVal), sizeof(nVal));
    1284           0 :                 ret = snprintf(szBuf + nOffset, nBufLen - nOffset, "%d",
    1285             :                                CPL_MSBWORD32(nVal));
    1286           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1287           0 :                     return CE_Failure;
    1288           0 :                 nOffset += ret;
    1289             :             }
    1290           0 :             break;
    1291           0 :         case EDT_UInt32:
    1292           0 :             for (i = 0; i < pField->nCount; ++i)
    1293             :             {
    1294             :                 GUInt32 nVal;
    1295           0 :                 if (i > 0)
    1296           0 :                     szBuf[nOffset++] = ' ';
    1297           0 :                 memcpy(&nVal, pData + i * sizeof(nVal), sizeof(nVal));
    1298           0 :                 ret = snprintf(szBuf + nOffset, nBufLen - nOffset, "%u",
    1299             :                                CPL_MSBWORD32(nVal));
    1300           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1301           0 :                     return CE_Failure;
    1302           0 :                 nOffset += ret;
    1303             :             }
    1304           0 :             break;
    1305           0 :         case EDT_Float32:
    1306           0 :             for (i = 0; i < pField->nCount; ++i)
    1307             :             {
    1308             :                 float fValue;
    1309           0 :                 memcpy(&fValue, pData + i * sizeof(fValue), sizeof(fValue));
    1310             : #ifdef CPL_LSB
    1311           0 :                 CPL_SWAP32PTR(&fValue);
    1312             : #endif
    1313             : 
    1314           0 :                 if (i > 0)
    1315           0 :                     szBuf[nOffset++] = ' ';
    1316           0 :                 ret = CPLsnprintf(szBuf + nOffset, nBufLen - nOffset, "%f",
    1317             :                                   fValue);
    1318           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1319           0 :                     return CE_Failure;
    1320           0 :                 nOffset += ret;
    1321             :             }
    1322           0 :             break;
    1323           0 :         case EDT_Float64:
    1324           0 :             for (i = 0; i < pField->nCount; ++i)
    1325             :             {
    1326             :                 double dfValue;
    1327           0 :                 memcpy(&dfValue, pData + i * sizeof(dfValue), sizeof(dfValue));
    1328             : #ifdef CPL_LSB
    1329           0 :                 CPL_SWAPDOUBLE(&dfValue);
    1330             : #endif
    1331           0 :                 if (i > 0)
    1332           0 :                     szBuf[nOffset++] = ' ';
    1333           0 :                 ret = CPLsnprintf(szBuf + nOffset, nBufLen - nOffset, "%f",
    1334             :                                   dfValue);
    1335           0 :                 if (ret < 0 || ret >= (int)nBufLen - nOffset)
    1336           0 :                     return CE_Failure;
    1337           0 :                 nOffset += ret;
    1338             :             }
    1339           0 :             break;
    1340             :             /*
    1341             :                     case EDT_CInt16:
    1342             :                         for (i = 0; i < pField->nCount; ++i)
    1343             :                         {
    1344             :                             if (i > 0)
    1345             :                                 szBuf[nOffset++] = ' ';
    1346             :                             nOffset += sprintf(szBuf + nOffset, "(%d, %d)",
    1347             :                                             CPL_MSBWORD16(((const
    1348             :             GInt16*)pData)[2 * i]), CPL_MSBWORD16(((const GInt16*)pData)[2 *
    1349             :             i+1]));
    1350             :                         }
    1351             :                         break;
    1352             :                     case EDT_CInt32:
    1353             :                         for (i = 0; i < pField->nCount; ++i)
    1354             :                         {
    1355             :                             if (i > 0)
    1356             :                                 szBuf[nOffset++] = ' ';
    1357             :                             nOffset += sprintf(szBuf + nOffset, "(%d, %d)",
    1358             :                                             CPL_MSBWORD32(((const
    1359             :             GInt32*)pData)[2 * i]), CPL_MSBWORD32(((const GInt32*)pData)[2 *
    1360             :             i+1]));
    1361             :                         }
    1362             :                         break;
    1363             :                     case EDT_CFloat32:
    1364             :                         for (i = 0; i < pField->nCount; ++i)
    1365             :                         {
    1366             :                             float fReal = ((const float*)pData)[2 * i];
    1367             :                             float fImag = ((const float*)pData)[2 * i + 1];
    1368             :             #ifdef CPL_LSB
    1369             :                             CPL_SWAP32PTR( &fReal );
    1370             :                             CPL_SWAP32PTR( &fImag );
    1371             :             #endif
    1372             :                             if (i > 0)
    1373             :                                 szBuf[nOffset++] = ' ';
    1374             :                             nOffset += CPLsprintf(szBuf + nOffset, "(%f, %f)",
    1375             :             fReal, fImag);
    1376             :                         }
    1377             :                         break;
    1378             :                     case EDT_CFloat64:
    1379             :                         for (i = 0; i < pField->nCount; ++i)
    1380             :                         {
    1381             :                             double dfReal = ((const double*)pData)[2 * i];
    1382             :                             double dfImag = ((const double*)pData)[2 * i + 1];
    1383             :             #ifdef CPL_LSB
    1384             :                             CPL_SWAPDOUBLE( &dfReal );
    1385             :                             CPL_SWAPDOUBLE( &dfImag );
    1386             :             #endif
    1387             :                             if (i > 0)
    1388             :                                 szBuf[nOffset++] = ' ';
    1389             :                             nOffset += CPLsprintf(szBuf + nOffset, "(%f, %f)",
    1390             :             dfReal, dfImag);
    1391             :                         }
    1392             :                         break;
    1393             :             */
    1394           0 :         case EDT_MJD:
    1395           0 :             CPLAssert(pField->nCount == 1);
    1396             :             {
    1397             :                 GInt32 days;
    1398             :                 GUInt32 seconds, microseconds;
    1399             : 
    1400           0 :                 days = CPL_MSBWORD32(((const GInt32 *)pData)[0]);
    1401           0 :                 seconds = CPL_MSBWORD32(((const GUInt32 *)pData)[1]);
    1402           0 :                 microseconds = CPL_MSBWORD32(((const GUInt32 *)pData)[2]);
    1403             : 
    1404           0 :                 ret = snprintf(szBuf, nBufLen, "%d, %u, %u", days, seconds,
    1405             :                                microseconds);
    1406           0 :                 if (ret < 0 || ret >= (int)nBufLen)
    1407           0 :                     return CE_Failure;
    1408             :             }
    1409           0 :             break;
    1410           0 :         default:
    1411           0 :             CPLDebug("EnvisatDataset",
    1412             :                      "Unabe to convert '%s' field to string: "
    1413             :                      "unexpected data type '%d'.",
    1414           0 :                      pField->szName, pField->eType);
    1415           0 :             return CE_Failure;
    1416             :     }
    1417             : 
    1418           0 :     return CE_None;
    1419             : }

Generated by: LCOV version 1.14